遍歷文件夾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);
				}
			}
		}
	}

}

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用os模块来实现遍历文件夹内所有文件内容的功能,以下是Python代码示例: ```python import os def traverse_files(rootdir): for subdir, dirs, files in os.walk(rootdir): for file in files: filepath = os.path.join(subdir, file) with open(filepath, 'r') as f: content = f.read() # 在此处对文件内容进行处理 print(content) ``` 在这个示例中,`os.walk()`函数用于遍历指定路径下的所有文件夹、子文件夹和文件。`os.path.join()`函数用于拼接文件路径。`with open() as f:`语句用于打开文件,并在文件处理完成后自动关闭文件。在这个示例中,可以在`with`语句中添加对文件内容的处理代码。 ### 回答2: 在Python中,可以使用os模块和递归函数来遍历文件夹内的所有文件内容。下面是一个示例代码: ```python import os def traverse_folder(folder_path): for root, dirs, files in os.walk(folder_path): # 递归遍历文件夹内的所有文件和子文件夹 for file_name in files: file_path = os.path.join(root, file_name) # 获取文件的完整路径 with open(file_path, 'r') as file: file_contents = file.read() # 读取文件内容 print(file_contents) # 处理文件内容,这里只是简单地打印出来 folder_path = '/path/to/folder' # 替换为你想要遍历的文件夹路径 traverse_folder(folder_path) ``` 上述代码中,`traverse_folder`函数使用`os.walk`函数遍历文件夹内的所有文件和子文件夹。在遍历过程中,通过`os.path.join`函数获取每个文件的完整路径,并使用`open`函数打开文件。接着,使用`read`方法读取文件内容,并进行相应的处理操作。这里只是简单地打印出文件内容。 需要注意的是,`folder_path`变量需要替换为你想要遍历的文件夹路径。使用该代码可以遍历指定文件夹内所有文件的内容。 ### 回答3: Python可以使用os模块来遍历文件夹内的所有文件内容。以下是一个示例代码,用于遍历指定文件夹内的所有文件并输出文件内容: ```python import os def traverse_files(folder_path): for root, dirs, files in os.walk(folder_path): for file in files: file_path = os.path.join(root, file) with open(file_path, 'r') as f: content = f.read() print(content) # 指定要遍历的文件夹路径 folder_path = "目标文件夹路径" traverse_files(folder_path) ``` 在以上代码中,首先导入了os模块。然后定义了一个名为`traverse_files`的函数,该函数接受一个文件夹路径作为参数。在函数内部,使用`os.walk()`函数遍历文件夹及其子文件夹,并返回当前文件夹路径、子文件夹列表和文件列表。然后,使用两个嵌套的for循环遍历文件列表,并在每次循环中将文件路径与文件名合并为完整文件路径。最后,使用`open()`函数打开文件,并使用`read()`方法读取文件内容,将内容存储在变量content中。然后,通过打印content来输出文件内容。 使用以上代码,您可以在指定的文件夹中遍历所有文件,并将它们的内容输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值