需求

”E:/data/”目录下有四个文件夹,如下:

每个文件夹下有几个.csv文件,如下:

将每个文件夹下的.csv文件合并成一个以该文件夹命名的.csv文件。

做法

找到“E:/data”这个目录,循环读取目录下的四个文件夹;

针对每个文件夹,循环读取目录下的文件列表;

将读取的文件写入要合并的文件中。

代码

public class FileOperation {
public static void main(String[] args) {
combine();
}
private static void combine() {
File files = new File("E:/data/");
String directory1[] =files.list();
for(int x=0;x<directory1.length;x++){
BufferedReader bufr = null;
BufferedWriter bufw = null;
try {
FileWriter fw = new FileWriter("E:/data/"+directory1[x]+".csv",true);
bufw = new BufferedWriter(fw);
File fs = new File("E:/data/"+directory1[x]);
String directory2[] = fs.list();
for(int i=0;i<directory2.length;i++){
File f = new File("E:/data/"+directory1[x]+"/"+directory2[i]);
FileInputStream fi = new FileInputStream(f);
InputStreamReader read = new InputStreamReader(fi, "GBK");
bufr = new BufferedReader(read);
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
if(fi!=null)
fi.close();
if(read!=null)
read.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(bufr!=null)
bufr.close();
if(bufw!=null)
bufw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

该代码已解决中文乱码问题。

小知识

列出目录下所有内容:

File files = new File("E:/data/");
String directory[] =files.list();

上述两行代码列出了”E:/data”目录下的所有内容。

Java底层代码实现多文件读取和写入的更多相关文章

  1. Java底层代码实现单文件读取和写入(解决中文乱码问题)

    需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public cla ...

  2. Apache commons-io实现单文件读取和写入

    Apache commons-io提供了很多类,这里只介绍FileUtils类. FileUtils类提供了一些操作文件对象的实用方法,包括文件的读取.写入.复制和比较等. 比如逐句读取和写入一个文件 ...

  3. python文件读取和写入案例

    python文件读取和写入案例  直接上代码吧 都是说明 百度上找了很多,最终得出思路 没有直接可以读取修改的扩展,只能先读取,然后复制一份,然后在复制出来的文件里面追加保存 然后删除读的那个,但是缺 ...

  4. HDFS数据流-剖析文件读取及写入

    HDFS数据流-剖析文件读取及写入 文件读取 1. 客户端通过调用FileSystem对象的open方法来打开希望读取的文件,对于HDFS来说,这个对象是分布式文件系统的一个实例.2. Distrib ...

  5. Java基础IO流 ,文件读取,由易至难

    最基础的读取文件 import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;imp ...

  6. java===java基础学习(5)---文件读取,写入操作

    文件的写入读取有很多方法,今天学到的是Scanner和PrintWriter 文件读取 Scanner in = new Scanner(Paths.get("file.txt") ...

  7. properties文件读取与写入

    将peoperties文件的读取和写入封装成了一个工具类: import java.io.BufferedInputStream; import java.io.FileInputStream; im ...

  8. Delphi txt文件读取及写入

    简介:Delphi支持三种文件类型:文本文件.记录文件.无类型文件.文本文件的读...   在进行win32开发中对文件的读写是最常用的操作之一 Delphi 支持三种文件类型:  文本文件.记录文件 ...

  9. MATLAB中TXT数据文件读取并写入元胞数组的方法与步骤

    一. TXT数据文件读取 Data = load('train.txt');   %简单的文件读取,这时在工作区可以看到导入的大数据变量Data 二.大数据变量Data装入元胞数组中 D = cell ...

随机推荐

  1. PhpMyAdmin 配置文件现在需要一个短语密码的解决方法

    新版本的PhpMyAdmin 增强了安全性,需要在配置文件设置一个短语密码.否则进入之后会有“配置文件现在需要一个短语密码.”的红色警叹提示. 解决方法: 1.将 phpMyAdmin/librari ...

  2. 【Mac + Python3.6 + ATX基于facebook-wda】之IOS自动化(一):WebDriverAgent安装

    此篇介绍如何安装WebDriverAgent,下一篇介绍facebook-wda库的安装使用以及自动化脚本的开发. 前言: 对于iOS的应用的测试,如果不需要用到图像识别,推荐使用这个项目facebo ...

  3. ionic2常见问题-启动后白屏问题

    问题描述 app启动后大概有几秒白屏,才会显示首页,如下gif图 启动有白屏.gif 解决方法1 请查看以下3张图的标注 图 1-最初config.xml配置 图 2-更改后的splash配置 图 3 ...

  4. Android开发:《Gradle Recipes for Android》阅读笔记1.6——使用android studio添加依赖

    有经验的gradle开发者习惯直接编辑build.gradle文件,但是IDE没有提供许多代码提示.IDE提供了一个可视的界面显示配置内容. 点击像文件夹一样的图标可以看到project struct ...

  5. 【BZOJ5047】空间传送装置 最短路

    [BZOJ5047]空间传送装置 Description 太空中一共有n座星球,它们之间可以通过空间传送装置进行转移.空间传送装置分为m种,第i种装置可以用4个参数a_i,b_i,c_i,d_i来描述 ...

  6. 【BZOJ1266】[AHOI2006]上学路线route Floyd+最小割

    [BZOJ1266][AHOI2006]上学路线route Description 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林 ...

  7. EasyNVR摄像机无插件直播如何排查视频广场不在线

    通道配置完成进入视频广场监控通道显示不在线 保证RTSP视频流地址是否可用,推荐用VLC先测试地址是否可用.(注意:软件本身只支持标准的RTSP视频流地址.) 如果是刚配置完需要等大概几秒左右有的网络 ...

  8. EasyNVR和EasyDSS云平台联手都不能解决的事情,只有国标GB28181能解决了

    需求痛点 我们经常收到这样一种需求,就是将客户手里的各种类型的网络摄像机IPC和网络硬盘录像机NVR进行统一的整合接入和管理,并进行常规的直播.存储.录像检索和回放等操作,而这个时候我们通常会选择用E ...

  9. JS 插件 fastclick.js 解决手机端click点击延迟

    FastClick 是一个简单,易于使用的JS库用于消除在移动浏览器上触发click事件与一个物理Tap(敲击)之间的300延迟. 对于非移动浏览器不启作用,禁用缩放标签. <meta name ...

  10. 发挥inline-block作用

    .pay-type { // 同行 display: inline-flex; padding: 0 @pay-type_2imgs_padding-width; } .pay-type_icon { ...