Java底层代码实现多文件读取和写入

java

需求:

”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底层代码实现多文件读取和写入 的全部内容, 来源链接: utcz.com/z/393554.html

回到顶部