`
alpkpk123
  • 浏览: 14729 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

遍歷文件夾and拷貝文件內容

阅读更多

這邊介紹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);
				}
			}
		}
	}

}

 自己感覺還是用迭代比較好,效率也搞點吧

 

分享到:
评论

相关推荐

    Qt文件或文件夹拷贝

    在Qt库中,进行文件和文件夹的拷贝操作是一项常见的任务,这在软件开发中尤其重要,因为可能需要在程序运行过程中动态处理文件和数据迁移。`Qt`提供了丰富的API来实现这些功能,让我们详细了解一下如何使用`Qt`进行...

    python 获取指定文件夹下所有文件名称并写入列表的实例

    在Python编程中,有时我们需要遍历一个特定的文件夹,获取其中所有文件的名称,并将这些名称存储到一个列表中。这在处理大量数据时非常有用,比如在深度学习项目中,我们需要对图像数据集进行预处理。下面,我们将...

    vbs复制文件夹的实现代码

    - 遍历源文件夹中的所有文件,对每个文件执行复制操作。 - 如果目标位置的文件已经存在并且允许覆盖,则删除原文件后重新复制。 - 对于源文件夹下的子文件夹,递归调用 `XCopy` 函数进行复制。 #### 三、扩展...

    通过网络复制文件夹,Vb源码示例

    2. 遍历文件夹:获取源文件夹内的所有文件和子文件夹,可以使用FSO的GetFolder和GetFiles方法。 3. 复制文件:对于每个文件,打开源文件,创建目标文件,然后读取源文件内容并写入目标文件。如果使用.NET Framework...

    2021-2022计算机二级等级考试试题及答案No.10671.docx

    - 当驱动器控件中的驱动器字母发生变化时,文件夹列表控件中的内容应该相应更新。 - 通过`Dir1.Path = Drive1.Drive`这样的赋值语句可以实现上述功能。 ### 11. 查询类型 **知识点概述**: - **交叉表查询**:在一...

    2021-2022计算机二级等级考试试题及答案No.10541.docx

    - **选项解析**:选择执行“文件”菜单中的“新建”命令是用于创建新的文件或文件夹,而不是删除。 **结论**:此题的答案是“错误”。 ### 23. 数据库查询条件 **知识点**:在数据库查询中,使用适当的条件来筛选...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    文件内容 9. 显示宽度 (linesize) 说明:设置显示行的宽度,默认是80个字符 用法:set linesize 120 10. 显示页数 (pagesize) 说明:设置每页显示的行数,默认是14页 用法:set pagesize 20 三、 用户管理 1. 创建...

Global site tag (gtag.js) - Google Analytics