1

我想编写一个简单的类,每 5 秒打印一次文件。

我的代码是:

public class FileLoggerTask implements Runnable
{
    private PrintWriter printWriter = null;
    private boolean isActive = true;

    public FileLoggerTask(PrintWriter printWriter)
    {
        this.printWriter = printWriter;
    }

    public void run()
    {
        while(isActive)
        {
            printWriter.println("Test line");

            try
            {
                Thread.sleep(5000);
            }

            catch(InterruptedException e)
            {
                System.out.println(e);
            }
        }
    }

    void closeTask()
    {
        isActive = false;
    }
}

在一个按钮的监听器中,我写道:

File file = new File("TestFile.txt");
FileWriter fileWriter = new FileWriter(file);
PrintWriter printWriter = new PrintWriter(fileWriter);
FileLoggerTask fileLoggerTask = new FileLoggerTask(printWriter);
Thread thread = new Thread(fileLoggerTask);

在另一个按钮的监听器中,我写道:

fileLoggerTask.closeTask();
printWriter.close();

我的问题是它每 5 秒在我的文件中写入“测试行”,但它没有附加任何换行符。我尝试添加 printWriter.println() 或 printWriter.println("\n") 但它不起作用,我不知道为什么。

你有什么建议吗?

非常感谢你。

4

2 回答 2

5

你怎么知道没有换行符?我问是因为如果您在 Windows 上使用一些文本编辑器,但您的代码在 Unix 上运行,您可能看不到它们。

你试过printWriter.println("\n\r")吗?

于 2012-09-25T15:04:23.463 回答
0

试试这个:

String newLine = System.getProperty("line.separator");
于 2012-09-25T15:04:29.437 回答