三、關於檔案與流的問題
關於檔案的操作,一長輩寫的很全,我就抄一下:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html
1) 載入指定目錄下面的所有檔案
1 //得到待匯入的目標檔案 2 File fromFile=new File(frompath); 3 if(!fromFile.isDirectory()){ 4 throw new Exception("請指定檔案夾!"); 5 } 6 //負載檔案 7 File[] fs=fromFile.listFiles(); 8 List<String> fileNames=new ArrayList<String>(); //檔案名稱 9 List<File> files=new ArrayList<File>(); //檔案10 //System.out.println("fs.length-->"+fs.length);11 for (File f : fs) {12 String fn=f.getName();13 if((!f.isDirectory())&&(fn.endsWith(".txt"))){ //以.txt結尾,不是檔案夾14 int i=fn.lastIndexOf(".");15 if((i>-1)&&i<fn.length())16 fn=fn.substring(0,i);17 //System.out.println("f.getName-->"+fn);18 fileNames.add(fn);19 files.add(f);20 }21 }
2) 寫入檔案
1 //複製檔案到指定目錄,先得到目錄,再複製,這裡有個要注意的地方,要先在得到的目錄下面new一個檔案,然後才能把Java File對象的內容寫到這個檔案裡面 2 String tofilepath=sysRoot+"\\course\\user\\"; 3 int i=0; 4 BufferedInputStream inBuff = null; 5 BufferedOutputStream outBuff = null; 6 for(i=0;i<files.size();i++){ 7 File file=new File(tofilepath,fileNames.get(i)+".le"); 8 if(!file.exists()){ 9 file.createNewFile();10 }11 inBuff=new BufferedInputStream(new FileInputStream(files.get(i)));12 outBuff=new BufferedOutputStream(new FileOutputStream(file));13 byte[] buff=new byte[1024];14 int len=0;15 while((len=inBuff.read(buff))!=-1){16 outBuff.write(buff, 0, len);17 }18 outBuff.flush();19 }20 if (inBuff != null)21 inBuff.close();22 if (outBuff != null)23 outBuff.close();
3) 檔案裡面的內容換行:
String nextLine=System.getProperty("line.separator");//用於換行 ,這個需要配合下面的一起使用,寫入到檔案時才會換行。
在windows下面\r\n是換行,所以也可以是:String newxLine="\r\n";
4) 寫入檔案:
String tempStr="這個是第一行!";
tempStr+=nextLine+"這個是第二行!"
BufferedOutputStream writer=new BufferedOutputStream(new FileOutputStream(conf)); writer.write(tempStr.getBytes(),0,tempStr.length());
注意,是:writer.write(tempStr.getBytes(),0,tempStr);
不是:writer.write(tempStr);
如果是下面一種,檔案內容將不會換行
-----僅用於學習記錄。