Java之向一個文件中輸入內容然后保存在固定的目錄中


題目:

向一個文件中輸入內容然后保存在固定的目錄中。

實現:

創建路徑類:

 

import java.io.File; import java.io.IOException; import java.util.Scanner; public class FileCreate { // 創建目錄和文件 public File createPath() { Scanner sc = new Scanner(System.in); String fileParent = "D:" + File.separator + "Demo2" + File.separator; System.out.print("請輸入保存的文件名稱:"); String child = sc.next() + ".txt"; String fileName = fileParent + child; File file = new File(fileName); if (file.getParentFile().exists()) { // 如果文件父路徑存在 return file; } else if (!file.getParentFile().exists()) { // 如果父路徑不存在 file.getParentFile().mkdirs(); // 創建父路徑 return file; } else { System.out.println("輸入的路徑有誤!請重新輸入!"); createPath(); } return null; } }

 

定義一個接口來標准化輸入內容:

public interface IWrite { public void writeString(); }

 

 

這里沒有創建文件是因為下面OutputStream輸出內容的時候會自動創建文件。

 

import java.io.*; import java.nio.charset.StandardCharsets; import java.util.Scanner; public class FileUtil implements IWrite{ private FileCreate fileName; public FileUtil(FileCreate fileName) { this.fileName = fileName; } @Override public void writeString() { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); // 個人覺得鍵盤輸入最好是使用BufferedReader, Scanner不接收空格和空 boolean flag = true; boolean changeH = false; OutputStream output = null; try { output = new FileOutputStream(this.fileName.createPath(), true); // 創建輸出流,為追加模式 while (flag) { // 如果想繼續輸入則為真,反之為假 System.out.println("請在下方輸入想要輸入的內容:"); String writeWord = ""; if (changeH) { try { writeWord += "\n" + input.readLine(); // 接收輸入的內容 } catch (IOException e) { e.printStackTrace(); } } else { try { writeWord += input.readLine(); // 接收輸入的內容 } catch (IOException e) { e.printStackTrace(); } } try { output.write(writeWord.getBytes(StandardCharsets.UTF_8)); // 寫入輸入的內容 } catch (IOException e) { e.printStackTrace(); } System.out.println("是否繼續輸入?\n繼續輸入:1\t結束輸入:2"); flag = reWrite(); // 繼續輸入返回真,反之為假 if (flag) { // 如果繼續輸入再判斷是否換行輸入 System.out.println("是否換行輸入?\n換行輸入:1\t不換輸入:2"); changeH = changeH(); // 換行返回真,反之為假  } } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (output != null) { try { output.close(); } catch (IOException e) { e.printStackTrace(); } } } } private boolean changeH() { Scanner sc = new Scanner(System.in); int choice = sc.nextInt(); if (choice == 1) { return true; // 換行 } else if (choice == 2) { return false; // 不換行 } else { System.out.println("錯誤!請輸入1或2:"); changeH(); } return false; } private boolean reWrite() { // 判斷是否繼續內容輸入 Scanner sc = new Scanner(System.in); int choice = sc.nextInt(); if (choice == 1) { return true; } else if (choice == 2) { return false; } else { System.out.println("錯誤!請輸入1或2:"); reWrite(); } return false; } }

 

 

 

上面進行輸出流的內容的輸入操作,鍵盤的操作最好使用BufferedReader進行,因為它支持空格的輸入。

 

public class Factory { // 工廠模式獲取對象 private Factory(){} public static IWrite
getInstance(){ return new FileUtil(new FileCreate()); } }

 

 

 

獲取對象不應該在客戶端進行,所以創建一個工廠類進行對象的獲取。

 

public class MAIN { public static void main(String[] args) { Factory.getInstance().writeString(); // 傳入要進行內容輸入的文件路徑  } }

 

 

 

程序開始。

結果顯示:

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM