【问题标题】:How to write each line to a new line in Java?如何在Java中将每一行写入新行?
【发布时间】:2014-02-06 22:19:49
【问题描述】:

我编写了一个方法,将 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();
        }
    }

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

【问题讨论】:

  • "\n" 更改为"\r\n"
  • 谢谢,这行得通...我可以不自己添加文件路径,而是提示用户选择一个吗?

标签: java arraylist


【解决方案1】:

对于编写新行,BufferedWriter 类的 check out the newLine() method

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

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

【讨论】:

  • 您好,扫描仪代码不起作用,我已经为其导入了库。
  • 我需要为此单独创建一个方法还是可以将其粘贴到我已有的方法中?
  • 我会在您的主要方法中进行用户输入和验证。
【解决方案2】:

要附加在文件上,请使用:

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

FileWriter public FileWriter(String fileName, boolean append) throws IOException 在给定文件名的情况下构造一个 FileWriter 对象,该文件名带有一个布尔值,指示是否 或不追加写入的数据。

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

其他例子:

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

        bufferedOutput.write(<your binaries here>);

【讨论】:

    【解决方案3】:

    试试这样的怎么样

    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 方法。您可以添加系统。在你所有的陈述之前打印而不是写入文件。

    编辑,我也假设您正确调用了字符串。你可能需要类似的东西

            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);
        }
    }
    

    【讨论】:

      【解决方案4】:

      问题 #1:

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

      问题 #2

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

      【讨论】:

        【解决方案5】:


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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多