`
alpkpk123
  • 浏览: 13957 次
  • 性别: 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);
				}
			}
		}
	}

}

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics