OutputStreamWriter
是 Java 中用于將字符數據轉換為字節流的類,它可以與 FileOutputStream
結合使用來實現日志文件的記錄。以下是一個簡單的示例:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.Date;
public class LogWriter {
private static final String LOG_FILE = "log.txt";
public static void main(String[] args) {
try {
writeLog("This is a log message.");
} catch (IOException e) {
System.err.println("Error writing log: " + e.getMessage());
}
}
public static void writeLog(String message) throws IOException {
try (FileOutputStream fos = new FileOutputStream(LOG_FILE, true);
OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) {
String logEntry = new Date() + ": " + message + System.lineSeparator();
osw.write(logEntry);
}
}
}
在這個示例中,我們創建了一個名為 LogWriter
的類,其中包含一個名為 writeLog
的靜態方法。這個方法接受一個字符串參數 message
,表示要寫入日志文件的消息。我們使用 try-with-resources
語句創建 FileOutputStream
和 OutputStreamWriter
對象,這樣可以確保在操作完成后自動關閉它們。
FileOutputStream
的構造函數接受一個布爾值參數 true
,表示我們希望以追加模式打開文件,這樣新的日志條目不會覆蓋舊的條目。OutputStreamWriter
的構造函數接受一個字符集參數,我們在這里使用 StandardCharsets.UTF_8
以確保正確處理 Unicode 字符。
在 writeLog
方法中,我們首先創建一個包含當前時間和日志消息的字符串 logEntry
,然后使用 OutputStreamWriter
的 write
方法將其寫入文件。注意,我們還添加了一個系統相關的行分隔符,以確保在不同操作系統上都能正確地分隔日志條目。
在 main
方法中,我們調用 writeLog
方法來記錄一條日志消息。如果在寫入過程中發生錯誤,我們將捕獲 IOException
并在控制臺上顯示錯誤消息。