java檔案操作 之 建立資料夾路徑和新檔案
一:問題
(1)java 的如果資料夾路徑不存在,先建立;
(2)如果檔名 的檔案不存在,先建立再讀寫;存在的話直接追加寫,關鍵字true表示追加
(3)File myPath = new File(toFilePath);
if ( !myPath.exists()){//若此目錄不存在,則建立之// 這個東西只能簡歷一級資料夾,兩級是無法建立的。。。。。
myPath.mkdir();
System.out.println("建立資料夾路徑為:"+ toFilePath);
}
如上程式碼只能建立一級目錄,不能夠建立二級目錄;即只能建立當前級的目錄,如果上一級目錄還不存在,則建立失敗;當然可以通過遞迴建立來解決這個問題
File myPath = new File(toFilePath); 僅僅是把路徑傳遞給了File.java類的私有屬性,請看原始碼,並沒有開啟檔案,所以不會丟擲FileNotFoundException
(4)//寫入檔名處理
String fileN = toFilePath + "\\" + fileName;
BufferedWriter writer = new BufferedWriter(new FileWriter(new File(fileN)));
與下面的程式碼對比
File file=new File(originalPath);
if(file.isFile() && file.exists()){ //判斷檔案是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考慮到編碼格式
BufferedReader bufferedReader = new BufferedReader(read);
}
其實,FileWriter 是包裝了(呼叫了) FileOutputStream()函式 原始碼如下:所以兩者有些類似的,只是stream可以過濾編碼罷了
public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}
二:程式碼實現
package edu.tju.cs; import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public class AllTest { /*public static void main(String[] args){ System.out.println("****\\\\"); String str = "a\\b\\b\\c.csv|aaaaa"; String[] chars = str.split("\\\\"); String[] fileName = chars[3].split("\\.");// u002e String[] tmp = chars[3].split("\\u007c");// \\u007c for(String cha:chars){ System.out.println(cha); } System.out.println(fileName[0]); System.out.println(tmp[1]); }*/ public static void main(String args[]) { StringBuffer fileBuf=new StringBuffer(); String filePar = "d:\\test";// 資料夾路徑 File myPath = new File( filePar ); if ( !myPath.exists()){//若此目錄不存在,則建立之 myPath.mkdir(); System.out.println("建立資料夾路徑為:"+ filePar); } // 資料夾路徑存在的情況下 String filename = "test.txt";// 檔名 try { FileWriter fw = new FileWriter(filePar + "\\" + filename,true);// filePar + "\\" + filename,true // FileWriter 就是牛,如果檔名 的檔案不存在,先建立再讀寫;存在的話直接追加寫,關鍵字true表示追加 String originalLine = "aaaaaaaaaa" + "\n";// System.out.println("*** "+ originalLine); fw.write(originalLine); // 關閉寫檔案,每次僅僅寫一行資料,因為一個讀檔案中僅僅一個唯一的od fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
總之,FileWriter 就是牛,如果檔名 的檔案不存在,先建立再讀寫;存在的話直接追加寫,關鍵字true表示追加 但是他只能一行一行的讀寫,不如代緩衝的讀寫效率高