0

所以我试图改变一个文本文件的格式,它每隔几行就有一个行号,只是为了让它更干净、更容易阅读。我做了一个简单的程序,将一行的前三个字符全部替换为空格,这三个字符空格是数字所在的位置。实际文本要等到几个空格才开始。当我这样做并打印出最终结果时,它会出现一个带有问号的菱形,我假设这是缺少字符的结果. 似乎大多数缺失的字符都是撇号。如果有人可以让我知道如何解决它,我将不胜感激:)

public class Conversion {
public static void main(String args[]) throws IOException {
    BufferedReader scan = null;
    try {
        scan = new BufferedReader(new FileReader(new File("C:\\Users\\Nasir\\Desktop\\Beowulftesting.txt")));
    } catch (FileNotFoundException e) {
        System.out.println("failed to read file");
    }

    String finalVersion = "";
    String currLine;
    while( (currLine = scan.readLine()) !=null){
        if(currLine.length()>3)
            currLine = "   "+ currLine.substring(3);

        finalVersion+=currLine+"\n";
    }

    scan.close();  
    System.out.println(finalVersion);
}
}
4

1 回答 1

0
  1. 而不是使用FileReader,使用InputStreamReader正确的文本编码。我认为出现奇怪的字符是因为您正在使用错误的编码读取文件。
  2. 顺便说一句,不要+=像你一样在循环中使用字符串。相反,使用StringBuilder

    StringBuilder finalVersion = new StringBuilder();
    String currLine;
    while ((currLine = scan.readLine()) != null) {
        if (currLine.length() > 3) {
            finalVersion.append("   ").append(currLine.substring(3));
        } else {
            finalVersion.append(currLine);
        }
        finalVersion.append('\n');
    }
    
于 2013-08-20T03:14:55.833 回答