File dir = new File("C:/Windows/.");
String[] names = dir.list();
FileDialog + FilenameFilterJFileChooser + FileFilter — 功能更強、介面更美觀FileReader.read() 回傳 int (0-65535,雙位元組);FileWriter.write(int) 寫入雙位元組,高位為空時會被捨棄;FileOutputStream.write(int) 僅寫入單位元組,雙位元組漢字高位直接丟失導致檔案損毀。
建議:永遠使用 InputStream/OutputStream 進行 I/O 操作,避免 Reader/Writer 編碼轉換陷阱。
使用 Unicode:textArea.append("\u00E1") 等。寫入檔案指定 UTF-8:out.write(textArea.getText().getBytes("UTF-8"))。讀取時同樣指定編碼:new String(bytes, "UTF-8")。
DataInputStream/DataOutputStream,提供各類型讀寫方法ObjectInputStream/ObjectOutputStream 可序列化物件,但增加硬碟開銷與頻寬需求純 Java 無乾淨方案。通常呼叫作業系統命令:Windows 執行 dir > c:\dir.txt 再解析;Unix/Linux 用 df -k > dir.txt。JConfig 函式庫提供相關方法但使用 JNI。
純 Java 無方案。Windows 可建立 FormatDrive.bat 內容 rundll32.exe shell32.dll,SHFormatDrive,再用 Runtime.exec() 執行(請先備份重要資料!)。
Unix/Linux 單一根目錄。Windows 多邏輯分區:File.listRoots() 回傳根目錄陣列。