首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用java8 streams根据一定的条件读入1个文件,写出3个文件

使用Java 8的Streams根据一定的条件读入一个文件,然后将文件内容根据条件分别写入三个文件。

首先,我们需要导入Java的IO和NIO库以及Java 8的Streams库:

代码语言:java
复制
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;

然后,我们可以定义一个方法来实现这个功能:

代码语言:java
复制
public class FileSplitter {
    public static void splitFile(String inputFile, String outputFile1, String outputFile2, String outputFile3) {
        try (Stream<String> lines = Files.lines(Paths.get(inputFile));
             BufferedWriter writer1 = new BufferedWriter(new FileWriter(outputFile1));
             BufferedWriter writer2 = new BufferedWriter(new FileWriter(outputFile2));
             BufferedWriter writer3 = new BufferedWriter(new FileWriter(outputFile3))) {

            lines.filter(line -> /* 根据条件过滤文件内容 */)
                    .forEach(line -> {
                        try {
                            if (/* 根据条件将内容写入文件1 */) {
                                writer1.write(line);
                                writer1.newLine();
                            } else if (/* 根据条件将内容写入文件2 */) {
                                writer2.write(line);
                                writer2.newLine();
                            } else {
                                writer3.write(line);
                                writer3.newLine();
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String inputFile = "input.txt";
        String outputFile1 = "output1.txt";
        String outputFile2 = "output2.txt";
        String outputFile3 = "output3.txt";

        splitFile(inputFile, outputFile1, outputFile2, outputFile3);
    }
}

在上述代码中,我们首先使用Files.lines()方法读取输入文件的内容,并使用filter()方法根据条件过滤文件内容。然后,使用forEach()方法遍历过滤后的内容,并根据条件将内容分别写入三个输出文件中。

请注意,上述代码中的条件判断和写入文件的逻辑需要根据实际需求进行修改。

推荐的腾讯云相关产品:腾讯云对象存储(COS)

腾讯云对象存储(COS)是一种安全、低成本、高可靠的云端存储服务,适用于存储和处理大规模非结构化数据。您可以使用腾讯云对象存储(COS)来存储和访问任意类型的文件和数据。

产品介绍链接地址:腾讯云对象存储(COS)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java8 Streams API 详解(上) -- 入门篇

引言 多年前,我们在介绍 java8 新特性时候,提到过作为 java8 一个亮点新特性 -- streams api 但上文中只是简单介绍了 streams api 基本用法,事实上,streams...,同时,结合另一个 java8 新特性 -- Lambda 表达式,可以极大地提升编程效率,增加代码可读性 基于 jvm 底层硬件优化,streams api 可以十分方便利用多核性能,达到并发编程效果...API 版本代码显然更加简洁和清晰,可读性、可维护性都有了显著提升,并且如果使用并发模式,Streams API 版本还会在性能上得到增强 由此可见,如果熟练掌握了 Streams API,那么在你开发过程中...操作 在一系列 Intermediate 操作之后,一定需要一个终极操作,来对流中数据做最终处理,这个“终极操作”就是 Terminal 操作,它包括: forEach -- 对流中每个元素执行相同操作...后记 本文我们通过一个例子看到了 Streams API 是如何使用,以及列出了 java8Streams API 包含所有操作 那么,这些操作具体应该如何使用呢?

69610

C++:cstdio 头文件详解

使用时候会自动创建三个标准流:stdin, stdout and stderr; 流属性 Streams有一些属性可以定义可以在它们上使用哪些函数以及它们如何通过它们处理数据输入或输出。...根据运行应用程序环境,可能会对文本流进行一些字符转换,以使某些特殊字符适应环境文本文件规范。另一方面,二进制流是从物理介质写入或读取字符序列,没有翻译,与读取或写入流字符一一对应。...指示符 Streams具有确定内部指示符,用于指定其当前状态,并影响对其执行某些输入和输出操作行为: 错误指示符 当与流相关操作发生错误时,将设置此指示符。...可以使用ferror功能检查此指示器,并可以通过调用clearerr,freopen或rewind来重置此指示器。 文件结束指示符 设置时,表示使用流执行上次读取或写入操作已到达文件结尾。...stdout vscanf 将格式化数据读入变量参数列表 vsnprintf 将格式化数据从变量参数列表写入一定大小缓冲区 vsprintf 将格式化数据从变量参数列表写入字符串 vsscanf

2K10

面试官上来就让手撕HashMap7种遍历方式,当场愣住,最后只写出了3种

写在开头 今天有个小伙伴私信诉苦,说面试官上来就让他手撕HashMap7种遍历方式,最终只写出3种常用,怀疑面试官是在故意刁难。这个问题大家怎么看?...至于要一下写出7种,大概率是考验面试者平时学习细心与自我总结能力,只要平时认真学习过,并且在日常代码开发中善于总结,善于归纳,完完全全写出来呀。...Stream流方式遍历; 而这4个大类下其实又根据具体实现形式,分为了很多小类,我们画一个思维导图直观看一下。...5.Lambda方式遍历 Lambda 表达式是推动 Java 8 发布最重要新特性,它作为一种匿名函数,使得java8拥有了把函数作为参数传递进方法中能力。...API 单线程场景下遍历方式 Java8另外一个新特性就是stream流,可以通过流进行数据检索、筛选、统计、排序等操作,由于它方法参数都是函数式接口类型,因此,它通常和Lambda 配合使用

8000

在Android项目中使用Java8

Android平台不支持Java8,如果我们想在Android项目中使用Lambda表达式、Stream API等Java8新特性就必须使用Retrolambda、Lightweight-Stream-API...API(Streams) 接口默认方法(Default Methods) 重复注解(Repeating Annotations) 简单说就是现在你项目要想使用Stream API、接口默认方法和重复注解就要求你...Java8,我们还需要项目module中gradle.build文件中加入如下代码: android { compileSdkVersion 24 buildToolsVersion "24.0.3...进行上述配置后大家就可以在Android项目中尽情探索使用Java8新特性了。...等编译方案也会有影响,没做过验证,有了解同学可以在评论区留言和大家交流下);总之要想在Android项目中愉快使用Java8全部新特性还需时日。

1K60

关于RxJava2.0你不知道事(一)

当你从本地磁盘某个文件或者数据库读取数据时(这个数据量往往也很大),应当使用Flowable,这样下游可以根据需求自己控制一次读取多少数据; 以读取数据为主且有阻塞线程可能时用Flowable,下游可以根据某种条件自己主动读取数据...Disposable 这里最大不同就是这个 onSubscribe ,根据 Specification, 这个函数一定是第一个被调用, 然后就会传给调用方一个 Subscription ,通过这种方式组织新背压关系...这里就可以解释上面的非阻塞背压。旧阻塞式背压,就是根据下游消费速度,中游可以选择阻塞住等待下游消费,随后向上游请求数据。.../Func接口,取而代之是与Java8命名类似的函数式接口,如下图: ?...这些接口命名大多参照了Java8,熟悉Java8新特性应该都知道意思,这里也就不再赘述了。

1.4K20

Java中FileInputStream与FileOutputStream基本使用详解

这里,我们首先要分清楚两个概念: InputStream(输入流):输入流是用来读入数据。- – – > > >读入 OutputStream(输出流):输出流是用来写出数据。...- – – > > >写出 ---- 文件输入流——FileInputStream FileInputStream 从文件系统中某个文件中获得输入字节。...args){ String content=null; try { int size=0; //定义一个字节缓冲区,该缓冲区大小根据需要来定义...; /** * 使用文件输入流和文件输出流实现文件复制 * @author Administrator * */ public class SummaryFISAndFOS { public...耗时:17毫秒 以上基本上就是我们经常用到方法介绍,记得最后一定要close()哦! 以上内容只代表我个人观点,有什么错误地方请各路大神指正!转载请注明出处!谢谢!

52440

Nodejs Stream pipe 使用与实现原理分析

通过流我们可以将一大块数据拆分为一小部分一点一点流动起来,而无需一次性全部读入,在 Linux 下我们可以通过 | 符号实现,类似的在 Nodejs Stream 模块中同样也为我们提供了 pipe...形式,这块代码看似没问题,但是它体验不是很好,因为它是将数据一次性读入内存再进行返回,当数据文件很大时候也是对内存一种消耗,因此不推荐它。...Stream 导入了 internal/streams/legacy 上面 /lib/internal/fs/streams.js 文件从 stream 模块获取了一个 Readable 对象,就是下面的...Readable 构造函数,且继承于 Stream,这个 Stream 正是我们上面提到 /lib/stream.js 文件,而在 /lib/stream.js 文件里加载了 internal/streams...之所以调用 src.pause() 是为了防止读入数据过快来不及写入,什么时候知道来不及写入呢,要看 dest.write(chunk) 什么时候返回 false,是根据创建流时传 highWaterMark

5.5K41

(数据科学学习手札77)基于geopandas空间数据分析——文件IO

坐标参考系有了较为深入学习,而在日常空间数据分析工作中矢量文件读入写出,是至关重要环节。   ...2 文件IO 2.1 矢量文件读入 geopandas将fiona作为操纵矢量数据读写功能后端,使用geopandas.read_file()读取对应类型文件,而在后端实际上是使用fiona.open...图14 2.1.4 过滤 geopandas在0.1.0版本中新增了bbox过滤,在0.7.0版本中新增了蒙版过滤和行过滤功能,可以辅助我们根据自己需要读入原始数据中子集,下面一一进行介绍: bbox...图17 2.2 矢量文件写出   在geopandas中使用to_file()来将GeoDataFrame或GeoSeries写出为矢量文件,主要支持shapefile、GeoJSON以及GeoPackage...,不像geopandas.read_file()可以根据传入文件名称信息自动推断类型,我们在写出矢量数据时就需要使用driver参数来声明文件类型: ESRI Shapefile   我们将上文最后一次读入

2K31

Java8文件方法代码学习

Java8文件方法代码学习   JDK7中引入了新文件操作类java.nio.file.File,它包含了很多有用方法来操作文件,比如检查文件是否为隐藏文件,或者是检查文件是否为只读文件。...此方法确保了当读入文件所有字节内容时,文件属性是关闭,否则就会出现IO异常或其它未检查异常。这意味着在读文件到最后块内容后,无需关闭文件。...如果你想读入文件作为字符串,那么你还可以使用readAllLines(Path path, Charset cs)方法,此方法与之前方法相似,也是在读完文件后无需关闭文件。...但是它返回不是字节数组,而是字符串数组。而且,Java8重写了此方法,无需指定字符集,直接使用UTF-8编码进行字符串转换。...如果你想一行一行读入文件作为字符串,那么你可以使用Files.lines()方法,它会从读入文件中返回字符串流,并使用UTF-8编码把字节转换成字符。

1.5K100

Python地信专题 | 基于geopandas空间数据分析-文件IO篇

,而在日常空间数据分析工作中矢量文件读入写出,是至关重要环节。...使用geopandas.read_file()读取对应类型文件,而在后端实际上是使用fiona.open来读入数据,即两者参数是保持一致读入数据自动转换为GeoDataFrame。...下面我们来读入图13所示文件: 图13 图14 2.1.4 过滤 geopandas在0.1.0版本中新增了bbox过滤,在0.7.0版本中新增了蒙版过滤和行过滤功能,可以辅助我们根据自己需要读入原始数据中子集...行过滤 行过滤功能就比较简单,通过参数rows控制读入原数据前若干行,可以用于在读取大型数据时先快速查看前几行以了解整个数据格式: 图17 2.2 矢量文件写出 在geopandas中使用to_file...不像geopandas.read_file()可以根据传入文件名称信息自动推断类型,我们在写出矢量数据时就需要使用driver参数来声明文件类型: ESRI Shapefile 我们将上文最后一次读入

2.1K20

让代码变得优雅简洁神器:Java8 Stream流式编程

在实际项目当中,若能熟练使用Java8 Stream流特性进行开发,就比较容易写出简洁优雅代码。...目前市面上很多开源框架,如Mybatis- Plus、kafka Streams以及Flink流处理等,都有一个相似的地方,即用到Stream流特性,其写出代码简洁而易懂,当然,若是在不熟悉流特性基础上而贸然去使用...Stream开发的话,难免会写出一手bug。...流创建方式包括从集合、数组、文件等数据源获取输入流或者输出流,或者通过网络连接获取到网络流,例如Kafka 流处理。常见使用场景包括从大型数据源读取、过滤、数据转换、聚合等操作。...在Java8collect方法中,除里toList()之外,还提供了例如toSet,toMap等方法满足不同场景,根据名字就可以知道,toSet()返回是一个Set集合,toMap()返回是一个

4.1K10

数据库最大连接数量

在数据库操作过程中,经常会遇到一些非业务逻辑错误,这样错误要求开发人员对于自己正在操作硬件软件乃至网络都有一定了解,这里说说关于数据库最大连接数量那点事儿 在某个项目操作过程中,数据库使用MySQL...,在进行用户并发访问测试时,当并发量达到一定程度时候就会出现程序连接数据库1040错误,1040错误具体描述是:“Can not connect to MySQL server....Handler_read_next 请求读入基于一个键一行次数。 Handler_read_rnd 请求读入基于一个固定位置一行次数。...Key_writes 将一个键值块物理写入磁盘次数。 Max_used_connections 同时使用连接最大数目。...Open_streams 打开流数量(主要用于日志记载) Opened_tables 已经打开数量。 Questions 发往服务器查询数量。

2K20

(数据科学学习手札140)详解geopandas中基于pyogrio矢量读写引擎

读入指定若干字段,当你矢量文件有很多无关紧要字段时,可以利用此特性来整洁数据以及减少读入数据内存消耗: 2.1.2 利用read_geometry参数设置是否忽略矢量列   如果你不需要矢量文件矢量信息...而通过设置参数max_features则可以控制最多读取多少行要素记录,当我们矢量文件记录行很多,而我们又只想简单查看几行看看数据长什么样时,这个参数就很实用了: 2.1.5 利用参数where对矢量文件进行条件过滤...  这个新特性非常实用,我们可以像写SQL查询语句那样传入我们过滤条件,从而帮助我们在读取数据时就实现比较丰富自由条件过滤效果,值得注意是,针对中文等由unicode字符构成字段名,需要将其包裹在...  所以现阶段建议读取shapefile文件时,可以使用columns+where组合方式代替sql以实现同样效果。...2.2 基于pyogrio矢量文件写出   相较于文件读取,新引擎中涉及文件写出功能参数就寡淡很多,只发现一个比较特别的promote_to_multi参数,用于强制将单部件要素转换为多部件要素:

90710

Java中IO流及利用IO流实现文件复制功能

每个设备都会有一个专用I/O地址,用来处理自己设备输入输出信息。比如电脑设备输入端口为键盘和鼠标,输出端口为显示屏。   软件层面:I/O即不同存储机制上数据读入写出。...流是指一定介质按照一定方向流动行为,在软件开发中指的是存储数据流动过程,这个数据源可以是硬盘中文件、内存或者是网络中某个URL   I/O流专门用于软件开发层面的理解,把数据从一个存储介质写出...关于Java中编码可以参看我这篇博客(Java中编码问题)           2、根据传输数据方向分类 输入流:把数据从其他存储机制读入到当前内存机制当中 输出流:把内存当中数据写出到其他存储机制当中...,那么就要一个字节或者一个字符写出  四、I/O流应用:文件复制功能  1、使用字节流进行文件复制  源代码:  package com.huaixn.copy; import java.io.FileInputStream...,以前也写过一篇,有兴趣可以点下面的链接查看:                   博客:Java中文件拷贝  在上面的文件复制功能代码中,使用字节流可以对.txt、.doc、.docx等文件类型进行拷贝

62820

c++读写文件几种方法_include有什么用

This is another line 从文件读入数据也可以用与 cin>>使用同样方法: // reading a text file #include ...This is another line 上面的例子读入一个文本文件内容,然后将它打印到屏幕上。...,返回pos_type 类型值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针位置 (用tellg) 或 put 流指针位置(用tellp)....这个过程称为同步(synchronization),它会在以下任一情况下发生: 当文件被关闭时: 在文件被关闭之前,所有还没有被完全写出或读取缓存都将被同步。...当缓存buffer 满时:缓存Buffers 有一定空间限制。当缓存满时,它会被自动同步。 控制符明确指明:当遇到流中某些特定控制符时,同步会发生。这些控制符包括:flush 和endl。

1K20

linux学习(七) jar命令详解

这个参数与忽略掉-m参数设置 -i 为指定jar文件创建索引文件 -C 表示转到相应目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命 二.jar使用范例: (1)创建jar...= 0) (写出= 0)(存储了 0%) 增加:hello/TestServlet2.class(读入= 1497) (写出= 818)(压缩了 45%) 增加:hello/HelloServlet.class...(读入= 1344) (写出= 736)(压缩了 45%) 增加:hello/TestServlet1.class(读入= 2037) (写出= 1118)(压缩了 45%) (3)显示jar包...(在输完你内容后加一个回车就OK)   (3) 一定有空格地方      key: value       在分号后面一定要写写一个空格 四.怎样使用jar包中类  还是写个小例子吧...(4) 根据得到主类名创建Class对象 Class c=Class.forName(name); (5) 根据Class对象调用其main方法: Method cm=c.getMethod

3K10

Java8中String.join方法,让我们代码更优美

【前言】 距Java8(14年3月19日)发布马上就四年了;相信接触过java8的人,会对它很多新特性新方法有感觉;自然我也不例外;今天就一起给大家分享一个java8方法。.../** * 上传文件 * * @param multipartFiles 待上传文件 * @return 上传到OSS地址 * @throws...【总结】 1、好代码给人一种美感,好代码让人看后直呼过瘾;如何写出一手好代码那?...三多是不二法门(多看、多动手、多思考); 2、看待一个事物要从多个维度,比如:针对java8,有的项目在用有的则没有用;不能一味说用了是好不用是不好;而是要站在不同维度通过不同视角去看待...,比如有些老项目,换成java8后修改成本和风险都很大,比如有的项目需要在客户机器上运行,但是客户有部分机器配置等条件只支持jdk6或更低版本jdk等等;当然相信随着时代发展,更好技术会逐渐普及

94320

Kotlin 初体验: 用 Kotlin 写命令行工具

如图, root 下边 N 层目录, M 个文件 找到关心文件(示例中为 *.java ) 根据规则替换文件内容, 重新把替换内容写入目标位置 文件处理流程 ?...如上图画了个大致图示, 因为过滤文件规则, 按照规则匹配和替换, 这两个操作不依赖额外资源, 可以进行一定多线程并行 了解 reactive programming 同学应该会感到这个图示相当山寨...参数解析 命令行工具当然需要读入参数了 我这里定义 src, dst 参数 使用 joptsimple.OptionParser 轻松实现: ? 3....解析参数, 根据目标文件夹, 创建目录结构 工具中如果指定了 dst, 那么会镜像创建 src 所有文件夹, 实现如下 ?...可以看到 filter和flatmap 里边又是一个 lambda 实现了一个接口 (java8中也是类似的, x -> {}) 读取文件部分: ?

2.3K70
领券