如何在Java中将每一行写入新行?

时间:2014-02-06 22:19:50

标签: java arraylist

我编写了一个将arrayList打印成文本文件的方法,但由于某种原因,每次都不会在新行上打印,它会将所有内容打印到一行。下面是我的代码。

private static void writingToFile() {
        try {
            BufferedWriter writeArrayList = new BufferedWriter (new FileWriter("D:\\text.txt"));
            for(StoreCommands s : commandsList){
                writeArrayList.write(s + "\n");
            }
            writeArrayList.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

此刻,我必须手动输入路径,我希望用户选择他们想要放置文件的位置,我该怎么做呢?感谢。

5 个答案:

答案 0 :(得分:0)

要附加到文件,请使用:

创建
new FileWriter("D:\\text.txt", true);
  

FileWriter public FileWriter(String fileName,                     boolean append)throws IOException在给定文件名的情况下构造FileWriter对象,其中boolean指示是否   或不附加所写的数据。

     

参数fileName - String系统相关的文件名。追加 -   boolean如果为true,则数据将写入文件末尾   而不是开始。如果指定的文件是,则抛出IOException   未找到或是否发生其他I / O错误。   More here

其他例子:

        FileOutputStream fileOutput = new FileOutputStream("myfile.txt", true);
        BufferedOutputStream bufferedOutput = new BufferedOutputStream(
                fileOutput);

        bufferedOutput.write(<your binaries here>);

答案 1 :(得分:0)

尝试这样的事情怎么样

private static void writingToFile() {
    try {
        PrintWriter out = new PrintWriter (new FileWriter("D:\\text.txt"));
        for(StoreCommands s : commandsList){
            out.println(s);
        }
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我更喜欢PrintWriter,因为我喜欢println方法。您可以添加系统。在所有陈述和打印之前,而不是写入文件。

编辑,我也假设您正确调用了String。你可能需要像

这样的东西
        for(StoreCommands s : commandsList){
            out.println(s.toString());
        }

最后是有趣的Java8版本

private static void writeToFile(){
    try(PrintWriter out = new PrintWriter(new FileWrite("test.txt"))){
        list.stream().map(StoreCommands::toString).forEach(s -> out.println(s));
        out.close();
    } catch (IOException ex){
        System.err.out(ex);
    }
}

答案 2 :(得分:0)

用于撰写新行BufferedWriter类的check out the newLine() method

对于阅读用户输入,您可以使用基本Scanner类,如下所示:

Scanner get = new Scanner(System.in);
String path = get.nextLine();
...

答案 3 :(得分:0)

问题#1:

"\n"更改为"\r\n"

问题#2

按照C.B.发布的答案,给他/她投票(如果可能的话)......

答案 4 :(得分:0)


要回答关于不必硬编码文件路径的问题,请尝试使用命令行参数,如下所示(在您的类中):

public static void main(String[] args){
...
writingToFile(args[0]);

然后,当您运行java应用程序时,您只需在命令行上指定文件名,如下所示:
java <classname>.java D:/text.txt