OutputStreamWriter
是 Java 中用于將字符數(shù)據(jù)轉(zhuǎn)換為字節(jié)流的類,它可以與 FileOutputStream
結(jié)合使用來實現(xiàn)日志文件的記錄。以下是一個簡單的示例:
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);
}
}
}
在這個示例中,我們創(chuàng)建了一個名為 LogWriter
的類,其中包含一個名為 writeLog
的靜態(tài)方法。這個方法接受一個字符串參數(shù) message
,表示要寫入日志文件的消息。我們使用 try-with-resources
語句創(chuàng)建 FileOutputStream
和 OutputStreamWriter
對象,這樣可以確保在操作完成后自動關(guān)閉它們。
FileOutputStream
的構(gòu)造函數(shù)接受一個布爾值參數(shù) true
,表示我們希望以追加模式打開文件,這樣新的日志條目不會覆蓋舊的條目。OutputStreamWriter
的構(gòu)造函數(shù)接受一個字符集參數(shù),我們在這里使用 StandardCharsets.UTF_8
以確保正確處理 Unicode 字符。
在 writeLog
方法中,我們首先創(chuàng)建一個包含當(dāng)前時間和日志消息的字符串 logEntry
,然后使用 OutputStreamWriter
的 write
方法將其寫入文件。注意,我們還添加了一個系統(tǒng)相關(guān)的行分隔符,以確保在不同操作系統(tǒng)上都能正確地分隔日志條目。
在 main
方法中,我們調(diào)用 writeLog
方法來記錄一條日志消息。如果在寫入過程中發(fā)生錯誤,我們將捕獲 IOException
并在控制臺上顯示錯誤消息。