遍文件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 blocke.printStackTrace();}finally{try {bf.close();bw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.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);}}}}}?自己感是用迭代比好,效率也搞吧
?