在Runnable线程中的文件中写入换行符

Joh*_*hnQ 1 java multithreading android printwriter

我想写一个简单的类,每隔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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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);
Run Code Online (Sandbox Code Playgroud)

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

fileLoggerTask.closeTask();
printWriter.close();
Run Code Online (Sandbox Code Playgroud)

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

你有什么建议吗?

非常感谢你.

mpr*_*vat 5

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

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

  • 顺便说一句@JohnQ,通常你打印"\ r \n"而不是相反. (2认同)