1

我有一个没有换行符的文件。我想要每 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 循环中执行“新字符串”是否效率低下或不推荐,或者你们是否看到在此代码中可以做得更好的任何事情。我真的想在编码方面做得更好!

谢谢!

4

3 回答 3

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!
    
  • 现在遍历字符串并\n在每 160位置插入 a 。

    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();
    
  • 现在您可以将这一行写入文件。

于 2012-11-20T14:38:05.057 回答
1

对我来说看起来不错,我能看到的唯一低效率是如果parseLine可以写得更好,可能会被传递line而不是newLine. 这取决于parseLine实际做什么。

于 2012-11-20T14:28:06.243 回答
0

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

字符串缓冲区 API 文档

如果您不是多线程的,StringBuilder也可能很有趣。

于 2012-11-20T14:26:37.477 回答