一:問題
(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表示追加 但是他只能一行一行的讀寫,不如代緩沖的讀寫效率高
