這邊介紹2中方式,對文件夾進行操作,并且copy文件
第一種普通方式遍歷文件夾(里面有些null沒做)
package com.fih.thh;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
/**
*把D盤跟目錄下面的tools下面的以.txt結尾(包括子文件夾)文件拷貝到Z盤
*/
public class TestCopy {
static String path = "D:\\tools";
public static void main(String[] args) {
LinkedList<File> list =new LinkedList<File>();
File file = new File(path);
if(file != null && file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
if(f.isDirectory()){
list.add(f);
}else{
new TestCopy().pass(f);
}
}
while(!list.isEmpty()){
File f = list.removeFirst();
for(File ff : f.listFiles()){
if(ff.isDirectory()){
list.add(ff);
}else{
new TestCopy().pass(ff);
}
}
}
}
}
public void pass(File f){
System.out.println("++++++++++++" + f.getAbsolutePath());
if(f.getName().split("\\.")[1].equals("txt")){
BufferedReader bf = null;
BufferedWriter bw = null;
try {
File ff = new File("Z:\\" + f.getName());
if(!ff.exists()){
ff.createNewFile();
}
bf = new BufferedReader(new FileReader(f.getAbsolutePath()));
bw = new BufferedWriter(new FileWriter("Z:\\" + ff.getName()));
String line;
while((line = bf.readLine())!= null){
String lineNew = line.split("\\.")[1];
bw.write(lineNew);
bw.newLine();
}
//傳送完要flush,不然不會拷貝東西過去,或者close時也有flush功能
bw.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
bf.close();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
第二種迭代方式
package com.fih.thh;
import java.io.File;
/**
*把D盤跟目錄下面的tools下面的以.txt結尾(包括子文件夾)文件拷貝到Z盤
*/
public class TestCopy2 {
public static void main(String[] args) {
File file = new File("D:\\tools");
pass(file);
}
public static void pass(File file){
if(file != null && file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
if(f.isDirectory()){
pass(f);
}else{
//調用了TestCopy中的類
new TestCopy().pass(f);
}
}
}
}
}
自己感覺還是用迭代比較好,效率也搞點吧
分享到:
相关推荐
在window下,使用c++遍历文件夹及其子文件夹所有文件 并输出文件路径和文件内容。网上的资源大多都只是遍历文件夹,但是我需要打印出文件内容,所以自己弄了两天,这就是我的成果(*^__^*) ……
winform 文件操作 WM6.0 c# 遍历文件夹、复制文件、删除文件、复制文件内容
遍历指定文件夹下的所有文本夹,首先,获取所有的文件夹;其次,从找到的第一个文件开始,循环查找,直到没有文件为止,最后,将文件目录和文件名组合,并存放到数组中
直接编译可以运行。运行时输入盘符如"d:"或者输入文件夹如:“c:\\window”等。可能文件比较多,需要遍历一段时间。为了方便检测,最好自己制定一个文件比较少的文件夹。
对linux命令tree的简单实现,遍历指定文件夹下的所有文件
NULL 博文链接:https://dietime1943.iteye.com/blog/1405929
基于matlab的遍历文件夹中的所有子文件,并且读取并存储子文件的数据
c c++ c语言遍历文件夹 c语言读文件 c语言写文件 高效算法
驱动层获取文件大小,遍历文件夹、创建文件、隐藏文件
遍历文件夹中的文件
遍历文件夹自动生成目录树
ASP实现遍历文件夹中图片文件,并按照时间顺序显示
遍历一个文件夹下面的所有文件(包括文件夹下的文件夹)
易语言遍历目录文件源码,遍历目录文件,遍历文件夹,遍历文件
VB 代码遍历文件夹下 所有文件夹,超简短代码,速度超快
C语言遍历文件夹目录中文件和文件夹
遍历文件夹和子文件夹,读取所有包含的文件名称及文件内容
QT遍历删除文件夹
主要介绍了nodejs实现遍历文件夹并统计文件大小,下面使用nodejs的遍历文件夹文件内容,并且读取所有的文件,并采取排序往大到小的顺序进行输出,需要的朋友可以参考下
如何遍历文件夹查找文件如何遍历文件夹查找文件