網頁

2020/4/6

Java write out file Mac OS

Java 在Mac OS中把檔案寫出到本機資料夾的方法如下。

以寫出一個簡單的文字檔為例,利用System.getProperty("user.home")取得家目錄(Home directory)。

String text = "hello world";
byte[] data = text.getBytes(StandardCharsets.UTF_8);
String home = System.getProperty("user.home"); // 取得Mac Home目錄
File file = new File(home + "/Documents/tmp/test.txt"); // 檔案輸出至Home目錄下的/Documents/tmp/test.txt
try ( // Java 7 try-with-resources
    FileOutputStream fos = new FileOutputStream(file); // 檔案輸出串流,無buffer
) {
    fos.write(data); // 寫出檔案
} catch (IOException e) {
    e.printStackTrace();
}

FileOutputStream無緩衝(buffer)效果,每次都直接把資料寫至檔案,效率不好。

通常會利用BufferedOutputStream提供緩衝(預設8192 bytes),寫出資料時是先把資料寫入緩衝(也就是記憶體)內,當緩衝滿了以後才把裡面的資料寫出至檔案。

String text = "hello world";
byte[] data = text.getBytes(StandardCharsets.UTF_8);
String home = System.getProperty("user.home"); // 取得Home目錄
File file = new File(home + "/Documents/tmp/test.txt"); // 檔案輸出至Home目錄下的/Documents/tmp/test.txt
try ( // Java 7 try-with-resources
    FileOutputStream fos = new FileOutputStream(file); // 檔案輸出串流,無buffer
    BufferedOutputStream bos = new BufferedOutputStream(fos); // buffer輸出串流
) {
    bos.write(data); // 將內容寫到buffer然後寫到檔案
} catch (IOException e) {
    e.printStackTrace();
}

沒有留言:

張貼留言