顯示具有 File I/O 標籤的文章。 顯示所有文章
顯示具有 File I/O 標籤的文章。 顯示所有文章

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);
  }
 }
}

執行結果













測試有目錄存在時

【File I / O 處理 01】File 處理

File 類別並不是 I/O 中所定義在資料流處理的類別,但它可直接處理檔案 file 及檔案系統 (file system,即知道檔案在那個目錄 directory 之下)。
   方法                 功能
   _____________________________________________

 canRead             比較可否讀取檔案
   canWrite            比較可否寫入檔案
   compareTo           比較 2 個檔案路徑
   createNewFile       建新檔案
   createTempFile      建臨時檔案
   delete              刪除檔案路徑
   exists              判斷檔案存在否
   getName             取出檔案或路徑名稱
   isDirectory         判斷File物件是否為目錄
   length              檔案長度
   list                取出File名稱,以字串陣列表示
   renameTo            更改檔名
   setReadOnly         將檔案 / 目錄設定唯讀
   toString            取出檔案路徑字串
   toURL               將檔案路徑轉換成 URL 檔案
   _____________________________________________
   

檔案:FileIOIsFile.java
import java.io.File;
import java.util.Scanner;


public class FileIOIsFile {

 public static void main(String[] args) {
  String fileName, fileDir;
  
  System.out.println("請輸入檔名: ");
  Scanner sn = new Scanner(System.in);
  fileDir = sn.next();
  
  File file = new File(fileDir);
  if(file.isFile())
   System.out.println(file.getName()+" 是檔案");
  else if(file.isDirectory())
   System.out.println(file.getName()+" 是目錄");
  else {
   System.out.println("無此檔案或目錄");
   System.exit(0);
  }
 }

}
執行結果

輸入檔案名稱









輸入目錄名稱



2014年4月21日 星期一

【File I / O 處理 02】Reader 類別

Reader 類別處理字元資料流讀取。

    方法                      功能
   _______________________________________________________

    close()                  關閉資料流
    mark(int numChars)       在資料流中標示目前的位置
    read()                   讀取 1 個字元
    read(char[] buffer)      將讀取的字元陣列放在buffer陣列中
    ready()                  檢查資料流是否準備好讀取
    reset()                  重置資料流
    skip(long n)             跳過 n 個字元
   _______________________________________________________
    



import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;


public class FileIOFileReader {

 public static void main(String[] args) {
  try{
   String fileName, fileDir;
   
   System.out.println("請輸入檔名: ");
   Scanner sn = new Scanner(System.in);
   fileDir = sn.next();
  
   char[] buffer = new char[100];
   FileReader file = new FileReader(fileDir);
   file.read(buffer);
   System.out.println(buffer);
   file.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   System.out.println("輸入檔案路徑錯誤");
  }
  
 }

}
執行結果