【问题标题】:Writing long string in Java to file将Java中的长字符串写入文件
【发布时间】:2011-10-23 00:40:35
【问题描述】:

我正在尝试将一个大整数数组(10 000 个元素)转储到一个文本文件中,但遇到了一些问题。我尝试了两种不同的方法,但似乎都没有奏效。下面是我写的函数:

private static void writeToFile(String name, int[] a){
    try {
        FileWriter fw = new FileWriter(name);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write("working");
        for (int n: a){
            bw.write(n + " ");
        }
        bw.close();
    } catch (IOException e) {
        System.err.print("Unable to write to file " + name+ ".");
        e.printStackTrace();
    }
}

我尝试的第一件事是在 for 循环中创建一个字符串,然后将整个字符串写入文件。这两种方法都不起作用,并且给我的结果如下:

  1. 文件已创建但留空
  2. 适用于较短的数组(约 10 个元素)
  3. 如果空格是字母,则可以正常工作,例如:bw.write(n + "a")

知道我做错了什么吗?还是有一种我没有看到的更简单的方法?

谢谢,
西瓦特里克斯

【问题讨论】:

  • 如果你使用:bw.write(String.valueOf(n) + " ");
  • 循环结束时是否关闭 BufferedWriter 和 FileWriter 对象?你有没有尝试调用flush方法?
  • 没有错。您正在编写一个包含很长一行的文件,而您的编辑器无法正确显示它。
  • 第二个 @Gabe 的评论。生成的文件在 vim 和记事本中看起来不错,但在 Eclipse 中非常奇怪(它知道有 48k 列但不显示它们)
  • 尝试 PrintWriter 并打印单独的行数。

标签: java io


【解决方案1】:

您能解释一下您之后是如何查看/阅读文件的吗?据我所知,您的代码基本上没问题(将 close() 移动到 finally 块),无论添加空格还是其他字母,它都应该没有区别。但这可能会有所作为,例如到文本编辑器,我想...?

【讨论】:

  • 在 notepad.exe 中打开生成的文本文件显示有内容,而 Eclipse 文本编辑器仅显示其中的最后一部分。我已经调试这段代码半小时了,它就这么简单(或者至少它对我有用,但我不是真正有问题的人)。
  • 请记住,这将是一条非常长的线——它的外观会因您打开它的方式而异......
  • 好的,你最终想用那个文件做什么?您是否特别关心某些特定的文本编辑器有一个错误,这意味着它不能正确显示? (如果您确实关心,那么 John Peat 暗示的解决方案可能是在每个数字后添加一个换行符。)
  • 它似乎适用于所有东西,除了 eclipse 内置编辑器,这可能是唯一永远不会打开它的东西,所以我认为我很好。谢谢大家。
【解决方案2】:

除非遇到异常,否则该代码会将a[] 的所有元素写入文件,后跟一个空格。但是它不会写任何行。这是你的问题吗?如果是这样,您需要在每个write() 之后使用bw.newLine()

【讨论】:

    猜你喜欢
    • 2021-02-08
    • 2015-07-16
    • 2016-05-27
    • 2013-02-02
    • 2011-05-03
    • 2020-08-28
    • 2016-06-15
    • 2015-12-14
    • 2013-02-08
    相关资源
    最近更新 更多