2014年4月22日 星期二

【File I / O 處理 09】位元組:BufferedOutputStream 類別


import java.io.*;
import java.util.Scanner;


public class FileIOBufferedOutputStream {

 public static void main(String[] args) {
  try {
   String fileName, fileDir;
   
   System.out.println("請輸入檔名: ");
   Scanner sn = new Scanner(System.in);
   fileDir = sn.next();
   
   BufferedOutputStream of = new BufferedOutputStream(new FileOutputStream(fileDir));
   String str = "Hello World!";
   byte[] b = str.getBytes();
   for(int i = 0; i < b.length; i++)
    of.write(b[i]);
   of.close();
  } catch(IOException e){
   System.out.println("輸入檔案路徑錯誤");
  }
 }

}
執行結果










新增檔案

【File I / O 處理 08】位元組:OutputStream 類別


import java.io.*;
import java.util.Scanner;


public class FileIOOutputStream {

 public static void main(String[] args) {
  String fileName, fileDir;
  try{
   System.out.println("請輸入檔名: ");
   Scanner sn = new Scanner(System.in);
   fileDir = sn.next();
   
   FileOutputStream of = new FileOutputStream(fileDir);
   String str = "Hello World!";
   byte[] b = str.getBytes();
   for(int i=0; i < b.length; i++)
    of.write(b[i]);
   of.close(); 
  }catch (IOException e){
   System.out.println("輸入檔案路徑錯誤");
  }
  
 }

}
執行結果












新增檔案

【File I / O 處理 07】位元組:FileInputStream 類別

輸入的來源是檔案。
import java.io.*;
import java.util.Scanner;


public class FileIOFileInputStream {

 public static void main(String[] args) {
  try{
   String fileName, fileDir;
   
   System.out.println("請輸入檔名: ");
   Scanner sn = new Scanner(System.in);
   fileDir = sn.next();

   FileInputStream fin = new FileInputStream(fileDir);
   int size = fin.available();
   byte[] b = new byte[size];
   fin.read(b);
   System.out.println(fileDir + " 位元大小: "+ size);
   for(int i=0; i < size;i++ ){
    //System.out.println(Byte.toString(b[i]));
    //System.out.format("%c", b[i]);
    System.out.print((char)b[i]);
   }
   System.out.println("OK");
   fin.close();
  }catch(IOException e){
   System.out.println("輸入檔案路徑錯誤");
  }
 }

}

執行結果










原本檔案內容

【File I / O 處理 06】BufferedWriter 類別


import java.io.*;
import java.util.Scanner;

public class FileIOBufferedWriter {

 public static void main(String[] args) {
  try {
   String fileName, fileDir;
   
   System.out.println("請輸入檔名: ");
   Scanner sn = new Scanner(System.in);
   fileDir = sn.next();
   
   BufferedWriter of = new BufferedWriter(new FileWriter (fileDir));
            of.write("以 BufferedWriter 寫入測試");
            of.newLine();
            of.write("讀取顯示這檔案");
            of.newLine();
            of.close();
            System.out.println("完成寫入檔案: "+ fileDir);
  }catch(IOException e){
   System.out.println("輸入檔案路徑錯誤");
   
  }
 }

}

執行結果









檢視輸出檔案









以此方式寫入,每次執行都會清除原來檔案的內容,若要在原檔案附加內容時,需要更改 FileWriter的參數:

      BufferedWriter of = new BufferedWriter(new FileWriter (fileDir, true));

【File I / O 處理 05-00】檔案寫入類別

Writer 類別處理字元資料流寫入指定檔案,其類別繼承圖示如下

【File I / O 處理 03】FileReader, BufferedReader 類別

import java.io.*; import java.util.Scanner;

public class FileIOBufferReader {

 public static void main(String[] args) {
  try {
   String fileName, fileDir;
   
   System.out.println("請輸入檔名: ");
   Scanner sn = new Scanner(System.in);
   fileDir = sn.next();
   
   FileReader file = new FileReader(fileDir);
   BufferedReader bf = new BufferedReader(file);
   do {
    String data = bf.readLine();
    if (data == null)
     break;
    System.out.println(data);
   } while (true);
   
   bf.close();
   
  } catch (IOException e){
   System.out.println("輸入檔案路徑錯誤");
  }
 }

}

執行結果

I/O : File 類別

 
import java.io.File;
import java.util.Scanner;

public class FileTest {
 public static void main(String[] args) {
  String filePath, fileName;
  
  System.out.print("檔案名稱 ? ");
  Scanner sn = new Scanner(System.in);
  filePath = sn.next();
  File fin = new File(filePath);
  fileName = fin.getName();
  
  if (fin.isFile())
   System.out.println("File exists : " + fileName);
  else if (fin.isDirectory())
   System.out.println("Directory exists : " + fileName);
  else {
   System.out.println("File or Directory Not Found");
   System.exit(0);
  }
 }
}

執行結果













測試有目錄存在時