package onlyfun.caterpillar; import java.io.*; import java.util.*; public class CharArrayReaderWriterDemo { public static void main(String[] args) { try { File file = new File(args[0]); BufferedReader bufInputReader = new BufferedReader( new FileReader(file)); // 將檔案讀入字元陣列 CharArrayWriter charArrayWriter = new CharArrayWriter(); char[] array = new char[1]; while(bufInputReader.read(array) != -1) { charArrayWriter.write(array); } charArrayWriter.close(); bufInputReader.close(); // 顯示字元陣列內容 array = charArrayWriter.toCharArray(); for(int i = 0; i < array.length; i++) System.out.print(array[i] + " "); System.out.println(); // 讓使用者輸入位置與字元修改字元陣列內容 Scanner scanner = new Scanner(System.in); System.out.print("輸入修改位置:"); int pos = scanner.nextInt(); System.out.print("輸入修改字元:"); char ch = scanner.next().charAt(0); array[pos-1] = ch; // 將字元陣列內容存回檔案 CharArrayReader charArrayReader = new CharArrayReader(array); BufferedWriter bufWriter = new BufferedWriter( new FileWriter(file)); char[] tmp = new char[1]; while(charArrayReader.read(tmp) != -1) { bufWriter.write(tmp); } charArrayReader.close(); bufWriter.flush(); bufWriter.close(); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("沒有指定檔案"); } catch(IOException e) { e.printStackTrace(); } } }