使用Java有效地解析和写入文件

时间:2012-11-20 14:21:31

标签: java string

我有一个没有新行字符的文件。我想要一个每160个字符的新行字符。

为此,我阅读了该文件,然后执行:

String newLine = "";
int lineSize = 160;
char[] line = new char[lineSize];
while (rEntrada.read(line) > 0) {
   newLine = new String(line);
   String parsedLine = parseLine(newLine, date);
   fw.write(parsedLine);
}

其中parseLine负责对该行进行一些额外的解析。我的主要问题是,如果在while循环中执行“new String”效率低或不推荐,或者如果你们看到在这段代码中可以做得更好的话。我真的想在编码方面做得更好!

谢谢!

3 个答案:

答案 0 :(得分:2)

试试这个。

  • 首先阅读单行。

    FileReader r = new FileReader(new File("<file-name>"));
    // A buffered reader is fast
    BufferedReader = reader = new BufferedReader(r);
    

    String line = reader.readLine();
    // Also use try-catch blocks!
    
  • 现在迭代字符串并在每160 th 位置插入一个\n

    StringBuilder sb = new StringBuilder();
    int counter = 0;
    

    for (int i=0; i<line.length(); i++){
        sb.append(line.charAt(i));
        counter++;
        if (counter==160){
            sb.append("\n");
            counter = 0;
        }
    }
    

    line = sb.toString();
    
  • 现在您可以将此行写入该文件。

答案 1 :(得分:1)

对我来说这看起来不错,我能看到的唯一效率低下的问题是parseLine是否可以写得更好,可能是line而不是newLine。这取决于parseLine实际做了什么。

答案 2 :(得分:0)

看一下StringBuffer,看看它在这种情况下是否不可用。

StringBuffer API Documentation

StringBuilder如果您不是多线程的,也可能会感兴趣。