我无法使用for循环访问数组的索引,但可以手动进行

时间:2018-07-10 08:22:36

标签: java arrays file split bufferedreader

try {
    FileInputStream fstream = new FileInputStream("C:\\Users\\xxx\\Desktop\\nginx.access.log");
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
    String strLine;
    List<String> list = new ArrayList<String>();
    /* read log line by line */
    while ((strLine = br.readLine()) != null)  
    {
        /* parse strLine to obtain what you want */
        list.add(strLine);
    }

    String[] stringArr = list.toArray(new String[0]);

    for (int i=0;i<stringArr.length;i++)
    {
        System.out.println(stringArr[i]); 

    }

    fstream.close();

} catch (Exception e) {
    System.err.println("Error: " + e.getMessage());
}
  • 当我尝试打印System.out.println(stringArr[0]);->第一行时 txt
  • System.out.println(stringArr[1]);->第二行txt等。

    但是当我使用for循环打印所有文本行时,它以随机行开始。
    对于循环代码,我看不到任何错误。我需要您的帮助。

1 个答案:

答案 0 :(得分:1)

对我来说,您的代码有效。测试文件的所有行均以正确的顺序打印。

是不是控制台的行数有限?如果限制为100行,您将在打印105行之后松开前5行。然后,看起来您的程序开始首先打印第六行。

Windows的cmd行数有限。 Eclipse的设置可以限制/限制行数。

要检查是否是您的问题,请执行程序并将其输出重定向到文件中,然后将该文件与原始文件进行比较:

crypt()