\ n打印到txt文件时不工作

时间:2018-03-23 04:21:50

标签: java java-io

尝试将字符串写入文本文件,该文件有效,但不包括newline \n部分。有人能告诉我为什么它不起作用? \t工作正常,但这不会。

FileReader类:

import java.io.*;

public class FileReader
{
    public static void readFile()
    {
        try
        {
            PrintWriter f;
            File file = new File("../webapps/Assignment1/Seats.txt");
            if(!file.exists())
            {
                f = new PrintWriter(file);
                f.write(populateSeats());
                f.close();
            }
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
    }

    public static String populateSeats()
    {
        String rowID[] = {"A", "B", "C" ,"D" ,"E" ,"F" ,"G" ,"H"};
        String seatPop = "";
        int rowCount = 0;
        int colCount = 1;

        for(int r = 0; r < 8; r++)
        {
            for(int c = 0; c < 8; c++)
            {
                seatPop += "SeatID: " + rowID[rowCount] + colCount + "\n";
                seatPop += "Avail: True \n";
                seatPop += "UserID: null\n";
                seatPop += "Phone: null\n";
                seatPop += "Address: null\n";
                seatPop += "Email: null\n";
                colCount++;
            }
            colCount = 1;
            rowCount++;
        }
        return seatPop;
    }
}

主类(只需创建一个FileReader实例,然后运行该方法)

FileReader file = new FileReader();

file.readFile();

2 个答案:

答案 0 :(得分:3)

我推测\n实际上是写入文件,但您使用的系统不使用\n作为行分隔符。如果是这样,那么这些字符就会出现,它们可能会在编辑器中呈现为换行符。相反,请尝试使用独立于系统的行分隔符:

System.lineSeparator();     // Java 7 or later; I'll assume this is your case

在您的代码中,您可能会这样做:

 for (int c = 0; c < 8; c++) {
    seatPop += "SeatID: " + rowID[rowCount] + colCount + System.lineSeparator();
    // etc.
}

答案 1 :(得分:-1)

在Windows上为文件添加新行时,请使用\r\n代替\n

\n专门用于Unix / Linux系统。

\r\n将在Windows上使用时添加新行。

因此,在您的代码中将其更改为

for (int c = 0; c < 8; c++) {
seatPop += "SeatID: " + rowID[rowCount] + colCount + "\r\n";
// .....
}

然而正如Tim在上面的回答中所说,最好的方法是使用System.lineSeparator();方法,因为这将返回正确的转义序列以生成独立于操作系统的新行。因此,我建议您使用System.lineSeparator();而不是\r\n