Feb 26, 2018

[JAVA] 讀取檔案 與 輸出

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class ReadFile {

 public static void main(String[] args) {
  System.out.println(">>>>> hello world... >>>>>");
  try( // JDK7 AutoClose
   //輸入來源為檔案
   BufferedReader br = new BufferedReader(new FileReader(new File("檔案路徑")));
   //輸出至Console
   BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  ) {
   char[] buffer = new char[1024];
   int readCnt = 0; //讀取筆數
   while ((readCnt = br.read(buffer)) != -1) {
    System.out.println("========================================================");
    bw.write(buffer, 0, readCnt);
    bw.flush();
    System.out.println("");
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

Feb 22, 2018

[SCJP 6.0] ch10 輸入輸出 筆記

RAM <= 輸入:開檔,打字
RAM => 輸出:存檔,顯示螢幕



java.io.
  Console:
    Console c = System.console();
    %...格式字串
    String: readLine()
    char[]: 密碼
  File: 檔案 or 目錄 (基本資訊)
    File f = new File("路徑");
    真正建立檔案/目錄:
      f.createNewFile();
      f.mkdirs();

讀取檔案"內容": (close())
  byte:
    InputStream => FileInputStream(File).read();
      讀取1byte(int),用(char)轉型 read檔尾-1
    OutputStream => FileOutputStream(File).write(byte[]);
      byte[] => String.getBytes()
    InputStream => ObjectInputStream(InputStream).readObject();
      檔尾EOFException
    OutputStream => ObjectOutputStream(OutputStream).writeObject(Object);
      Object => Serializable
      不想序列化的屬性:transient (直接套用預設值)

  字元:
    Reader => InputStreamReader => FileReader(File).read();
      read檔尾-1
    Writer => OutputStreamWriter => FileWriter(File).write(String);
    Reader => BufferedReader(Reader).readLine();
      null: 讀完
    Writer => BufferedWriter(Writer).write(String);
                                                       .flush(); 強制寫檔,刷新緩衝區

new BufferedReader( new FileReader( new File(路徑) ) )
new ObjectOutputStream( new FileOutputStream( new File(路徑) ) )
也有 BufferedInputStream(InputStream).read()
new PrintWriter(BufferedWriter).printf(String format, Object... args)