【问题标题】:Stringbuffer issues字符串缓冲区问题
【发布时间】:2012-12-03 21:15:32
【问题描述】:

我写了一个代码,让用户可以像文本编辑器一样在文本区域打开文本文件并输入新字符。编辑大文件并输入大量字符时似乎存在容量问题,文件没有被保存。 我试过 StringBuffer stuff.ensureCapacity(10000); 仍然没有工作。 我想知道问题是在保存到文件时还是在我的文本区域中修改时? 我有这样的事情:

  java.lang.StringBuffer text = new java.lang.StringBuffer();
  //some code here

  File myFile = new File(filename);
  DataInputStream dis = new DataInputStream(new FileInputStream (myFile));

    while((data = dis.readLine()) != null)
    {
      text.append(data+"\n");
    }

【问题讨论】:

  • 能否给我们看一下文件写入相关的代码?
  • 我不认为这是容量问题,更多的是编码问题;但是,如果您发布相关代码,我们会看到更多。
  • 达到2680个字符后,无法添加或删除字符。

标签: java fileoutputstream stringbuffer


【解决方案1】:

一些指针。

  • 您不需要指定java.lang.
  • 如果可以使用 StringBuilder,请不要使用 StringBuffer
  • 最重要的是,不要混合使用文本和二进制,因为这会导致混淆。

如果您想将整个文件作为字符串读取,我建议在 Java 7 中使用

Path path = FileSystems.getDefault().getPath("logs", "access.log");
String text = new String(Files.readAllBytes(path), "UTF-8");

或使用 Apache Commons IO FileUtils

String text = FileUtils.readFileToString(new File(filename));

【讨论】:

  • 只有当我达到大约 2680 个字符时才会出现此问题,之后文件不可编辑,除非删除几个字符。 StringBuilder 无法解决问题,因为我在 jsp 中编码,所以我将尝试 apache fileutils。
  • 您能否提供一个示例,我们可以重现您的问题,因为提供的代码中没有任何内容可以证明这一点? String 和 StringBuffer 可以包含 20 亿个字符
  • 问题不在于读取实际上是字符串追加和保存。
  • 所以它与上面的代码无关,甚至可能是浏览器问题?您是否尝试过其他浏览器?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2016-09-08
相关资源
最近更新 更多