我编写了以下FileWriter
:
try {
FileWriter writer = new FileWriter(new File("file.txt"), false);
String sizeX = jTextField1.getText();
String sizeY = jTextField2.getText();
writer.write(sizeX);
writer.write(sizeY);
writer.flush();
writer.close();
} catch (IOException ex) {}
现在我想插入一个新行,就像你通常使用\n
一样,但它似乎不起作用。
可以做些什么来解决这个问题?
谢谢。
如果你想获得当前操作系统中使用的新行字符,例如\r\n
for Windows,你可以通过它获取它们
System.getProperty("line.separator");
System.lineSeparator()
String.format("%n");
生成它们您还可以使用PrintStream
及其println
方法,该方法将自动在字符串末尾添加OS相关行分隔符
PrintStream fileStream = new PrintStream(new File("file.txt"));
fileStream.println("your data");
// ^^^^^^^ will add OS line separator after data
(BTW System.out
也是PrintStream的实例)。
试试System.getProperty( "line.separator" )
writer.write(System.getProperty( "line.separator" ));
尝试用FileWriter
包裹你的BufferedWriter
:
BufferedWriter bw = new BufferedWriter(writer);
bw.newLine();
Javadocs for BufferedWriter here。
从1.8开始,我认为这可能是一个额外的解决方案,值得添加到响应中:
Path java.nio.file.Files.write(Path path,Iterable lines,OpenOption ... options)抛出IOException
StringBuilder sb = new StringBuilder();
sb.append(jTextField1.getText());
sb.append(jTextField2.getText());
sb.append(System.lineSeparator());
Files.write(Paths.get("file.txt"), sb.toString().getBytes());
如果附加到同一个文件,也许使用带有Files.write()的Append标志
Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND);
这里“\ n”也正常。但这里的问题在于文本编辑器(可能是记事本)。尝试使用Wordpad查看输出。
如果您的意思是使用相同的代码但添加一个新行,以便在向文件添加内容时它将在新行上。你可以简单地使用BufferedWriter的newLine()
。
在这里我也改进了你的代码:NumberFormatException是不必要的,因为没有任何东西被转换为数字数据类型,保存变量也使用过一次。
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"));
writer.write(jTextField1.getText());
writer.write(jTextField2.getText());
writer.newLine();
writer.flush();
writer.close();
} catch (IOException ex) {
System.out.println("File could not be created");
}
我会解决这个问题:
BufferedWriter output;
output = new BufferedWriter(new FileWriter("file.txt", true));
String sizeX = jTextField1.getText();
String sizeY = jTextField2.getText();
output.append(sizeX);
output.append(sizeY);
output.newLine();
output.close();
FileWriter构造函数中的true允许追加。 方法newLine()由BufferedWriter提供 可以作为解决方案吗?