为什么在将读取文件的行附加到其中之后,我无法打印此 StringBuffer 对象的内容?



我有以下问题。我已经创建了一个方法,读取一个非常大的文本文件从它的路径开始。

文件是逐行读取的,每一行都被附加到StringBuffer中。

这是我的代码:

public void run(Vector parametri) {
    if (parametri != null && (parametri.isEmpty() == false)) {
        gvParam = (Vector) parametri.clone();
    } else {
        TraceLog.scrivi("Test Esistenza Parametri", "Parametri mancanti", false, TraceLog.lowConsole + TraceLog.highTrace + TraceLog.highLog);
        target.azione("Parametri mancanti !!");
        return;
    }
    String fattureXml = gvParam.get(0).toString();
    // READ THE FILE:   
    StringBuffer fileContent = new StringBuffer();
    try {
        // Creazione del reader per leggere il file:
        BufferedReader br = new BufferedReader(new FileReader(fattureXml));
        String line = null;
        while ((line = br.readLine()) != null) {
              //System.out.println(line);
              fileContent.append(line);
        } 
        System.out.println(fileContent.toString());

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
}

阅读段开始于注释//READ The FILE:

文件读取似乎工作正常,因为我使用了这一行(实际上是注释)

System.out.println(line);

检查所读行是否正确。

正如您现在看到的,我正在将这一行添加到StringBuffer中(以获得表示所读文件内容的大字符串),通过:

fileContent.append(line);

问题是,在循环之后,我试图在控制台中打印fileContent StringBuffer的内容,通过:

System.out.println(fileContent.toString());

但是没有打印。

为什么?我错过了什么?究竟是什么包含fileContent StringBuffer?它是像一个包含读取文件行之类的大字符串吗?

我的猜测是:由于您丢弃了所有的新行字符,您最终得到了一个非常长的,这是您的控制台无法处理的问题。(我自己在Eclipse控制台中经历过这种情况。)

尝试改变

fileContent.append(line);

fileContent.append(line).append('n');

正如@assylias指出的那样,您也可能想要放弃Vector(并使用ArrayList代替)。还有,看看这个问题:StringBuilder和StringBuffer的区别。

为将来参考,"现代"的做法是

String content = new String(Files.readAllBytes(Paths.get(fileName)));

相关内容

  • 没有找到相关文章

最新更新