import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.time.LocalDate; import org.junit.Test; public class WriteDiary { /** * 字節流 複製文件內容 */ @Test public void test1() { FileInputStream fi = null; FileOutputStream fo = null; try { fi = new FileInputStream("G:\\2222\\1.txt"); fo = new FileOutputStream("G:\\2222\\2.txt"); int a; while ((a=fi.read())!=-1){/*這裏的.read方法是把字 節一個接一個的傳給a,當爲空的時候則返回-1;*/ fo.write(a); } } catch (IOException e) { e.printStackTrace(); } finally { try { fi.close(); fo.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 字符流 複製文件內容 */ @Test public void test2() { FileReader fr = null; FileWriter fw = null; try { fr = new FileReader("G:\\2222\\2.txt"); fw = new FileWriter("G:\\2222\\3.txt"); int a; while ((a=fr.read())!=-1){ fw.write(a); } } catch (IOException e) { e.printStackTrace(); } finally { try { fr.close(); fw.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 字符流 寫日記 * @throws IOException */ @Test public void test3() throws IOException { //建立日期 LocalDate now = LocalDate.now(); StringBuffer content = new StringBuffer(""); File dir = new File("G:\\2222\\diary.txt"); if(dir.exists()) { //讀取日記內容 InputStreamReader diary = new InputStreamReader(new FileInputStream("G:\\2222\\diary.txt")); BufferedReader buffer = new BufferedReader(diary); //有內容就讀取 String line=""; while((line = buffer.readLine()) != null) { content.append(line); } //關閉IO流 buffer.close(); diary.close(); } //建立管道 InputStreamReader reader = new InputStreamReader(System.in); OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("G:\\2222\\diary.txt")); BufferedReader in = new BufferedReader(reader); boolean flag = true; do { System.out.println("今天日期:" + now); content.append("日期:" + now); System.out.println("輸入日記內容: "); content.append(" 日記內容:" + in.readLine()); System.out.println("輸入做者: "); content.append(" 做者:" + in.readLine() + "\r\n"); System.out.println("是否繼續寫日記?(Y/N)"); //跳出循環 String choose = in.readLine(); if(choose.equals("N") || choose.equals("n")) { flag = false; writer.write(content.toString()); } } while (flag); //關閉IO流 reader.close(); writer.close(); in.close(); } }