【问题标题】:Java - Won't read out File contentJava - 不会读出文件内容
【发布时间】:2023-04-10 08:07:01
【问题描述】:

我有一个 .txt 文件,例如,内容如下:

variable1="hello";
variable2="bye";
testing3="parameter";
whatisthis4="hello";
var5="exampletext";
example=3;
wellthen=8;
---

它逐行读取文件,直到我添加了一种保存数据的方法。

整个代码加上另一个阅读器(当然还有其他变量名)被包装在一个 try-catch 语句中。

String path_playlist = new File("").getAbsolutePath();
String fileName_playlist = path_playlist 
        + "/src/dancefusion/game/playlist.txt";
FileReader fr_playlist = new FileReader(fileName_playlist);
BufferedReader br_playlist = new BufferedReader(fr_playlist);

int track_counter = track_sum*9;
String trackinfos[] = new String[track_counter];

while(track_counter < 0)
{
    System.out.println("linecount="+track_counter);
    trackinfos[track_counter] = br_playlist.readLine();
    System.out.println(trackinfos[track_counter]);
    track_counter--;
}
System.out.println(Arrays.toString(trackinfos));

在本例中 track_sum 等于 1。

while 循环应该一次读取文件中的一行,但只读取空值:

[null, null, null, null, null, null, null, null, null]

更新 1:

while 条件设置错误...谢谢!

修正版:

while(track_counter < 0)

但是,现在它给了我一个“ArrayOutOfBounds:9”的例外。

有什么猜测吗?


最终更新:

正如@GiorgiMoniava 所提到的,我只需要在开始读入之前将track_counter 减1,因为Java 数组以0 开头,谢谢!

int track_counter = track_sum*8;
String trackinfos[] = new String[track_counter];

track_counter--;

while(track_counter >= 0)
{
    System.out.println("linecount="+track_counter);
    trackinfos[track_counter] = br_playlist.readLine();
    System.out.println(trackinfos[track_counter]);
    track_counter--;
}

也许你们中的一个人可以弄清楚我做错了什么......

当然,如果需要,我可以提供更多信息/代码! 提前致谢!

【问题讨论】:

  • 可能是错字? while(track_counter > 0)

标签: java bufferedreader filereader


【解决方案1】:

这看起来很奇怪

while(track_counter < 0)

您确定曾经输入过循环吗?我的猜测(根据您的输出)track_counter 是 9。

关于数组越界异常:如果创建大小为 N 的数组,则只能使用索引访问它:[0, N-1]

【讨论】:

  • 这没有意义,因为他也在使用这个 track_counter 引用一个数组索引,如果输入,它将是
  • @Apostolos 我也不认为循环被输入了;附言。不是Java专家,只是猜测
  • 谢谢,这解决了第一部分 - 现在它似乎进入了循环 - 但是我得到一个 ArrayIndexOutOfBoundsException: 9 知道如何摆脱它吗?谢谢!
  • @KaiAdam 没关系,如果你有大小为 500 的数组,你只能访问索引 0、...、499 处的元素
  • @KaiAdam 因为您可能仍在尝试通过超出范围的[500] 访问最后一个元素(在这种情况下为0-499)。问题不在于数组大小,而在于您尝试访问其元素的方式。
【解决方案2】:

试试这个

   while(track_counter > 0)
    {
        System.out.println("linecount="+track_counter);
        track_counter--;
        trackinfos[track_counter] = br_playlist.readLine();
        System.out.println(trackinfos[track_counter]);

    }

【讨论】:

  • 感谢您帮助我 - 但是,@GiorigeMoniava 首先得到了它:S
  • 好的,这不会阻止您为有帮助的答案投票。你当然可以接受 giorrgi 的回答 :)
  • 我当然对这两个答案都投了赞成票 :) 遗憾的是它说我的投票将不可见,因为我的声望点仍低于 15 分:S
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
  • 2014-05-31
  • 1970-01-01
相关资源
最近更新 更多