首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java fileOutputStream

Java fileOutputStream
EN

Stack Overflow用户
提问于 2013-09-02 14:37:22
回答 3查看 6.9K关注 0票数 2

我四处张望,却找不到我需要的东西。我正在编写一个简单的代码来将一些字符串保存到一个.txt文件中。

我正在使用:

代码语言:javascript
复制
File archivo = new File(FileName);
fileOutputStream.write(toString().getBytes());
fileOutputStream.flush();

当我这样做,.txt是成功地创建和保存我需要保存的信息,但它保存在一个巨大的一行全部。我怎么能把它保存在不同的线上呢?

打开txt时的示例:

代码语言:javascript
复制
This is line 1This is line 2This is line 3This is line 4

我在每个字符串的末尾加了'\n‘,但是它不起作用。

toString()返回一个字符串:“这是第1行”;OS: Windows 7

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-02 14:42:02

你可以尝试做这样的事情:

代码语言:javascript
复制
public void write(final File file, final List<String> lines) throws IOException{
    final BufferedWriter writer = new BufferedWriter(new FileWriter(file)); //new FileWriter(file, true) if you want to append the file (default is false)
    for(final String line : lines){
        writer.write(line);
        writer.newLine();
    }
    writer.flush();
    writer.close();
}

如果您正在使用Java 8,可以尝试使用lambdas:

代码语言:javascript
复制
public void write(final File file, final List<String> lines) throws IOException{
    final BufferedWriter writer = new BufferedWriter(new FileWriter(file)); //new FileWriter(file, true) if you want to append the file (default is false)
    lines.forEach(
            l -> {
                try{
                    writer.write(l);
                    writer.newLine();
                }catch(IOException ex){
                    ex.printStackTrace();
                }
            }
    );
    writer.flush();
    writer.close();
}

为了便于使用,您可以尝试如下:

write(new File(fileName), Arrays.asList("This is line 1", "This is line 2", "This is line 3", "This is line 4"));

票数 4
EN

Stack Overflow用户

发布于 2013-10-26 09:32:45

使用System.getProperty("line.separator"),,它将返回操作系统使用的序列来分隔文本文件中的行。

像这样试试。

代码语言:javascript
复制
File archivo = new File(FileName);
fileOutputStream.write(toString().getBytes());
fileOutputStream.write(System.getProperty("line.separator").getBytes());
fileOutputStream.flush();

参考文献:http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

票数 0
EN

Stack Overflow用户

发布于 2021-05-05 03:36:08

我认为您应该在编写之前将'\n‘添加到StringBuilder中。

代码语言:javascript
复制
StringBuilder sb = new StringBuilder();
sb.append("line 1" + "\n");
sb.append("line 2" + "\n");
sb.append("line 3" + "\n");

fileOutputStream.write(sb.toString().getBytes());

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18575649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档