尝试将字符串写入文本文件,该文件有效,但不包括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();
答案 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
。