2017-05-24 87 views
1

所以,我仍然对编程和本网站不熟悉。 我一直在试图让自己的浏览器只是为了好玩,我正在学习如何从文本文件中读取和读取以用作日志来保存数据。我正在尝试制作收藏夹系统,以便我可以将不同的网站保存到日志中,但我无法理解为什么我的部分代码无法工作。我在网上浏览了大约两个半小时,我看不到任何问题。写入文件的问题JavaFx

try(BufferedReader format1 = new BufferedReader(new 
             FileReader("favorites.txt"))) { 

      String line = format1.readLine(); //Used to look through file 
      String found = ""; //Stores the address that was the same 

      //Loop searches file, I only plan to have a max of 20 favorites 
      for (int counter = 0; counter < 20; counter++) { 

       System.out.println(line); //Just used so I can make sure the 
              loop works 

       if(line.equals(input)) { 
        counter = 20; 
        found = line; 
       } 

       line = format1.readLine(); 
      } 
      format1.close(); 

      if(!(found.equals(input))) { 
       BufferedWriter format2 = new BufferedWriter(new 
             FileWriter("favorites.txt", true)); 
       format2.write(input); 
       format2.newLine(); 

       format2.close(); 


      }   
    } catch (IOException e1) { 
     System.out.println("ERROR! Favorite not Added."); 
    } 

我已经检查过,看看问题出在哪里,if语句实际写入文件似乎是问题所在。我看了一百万次,我什么也看不见。也许更有经验的程序员可以看到我的问题?每当我运行这段代码时,它都会吐出大量的错误信息。我感谢任何帮助!

+0

“它吐出大量的错误信息”。错误信息是什么意思?你应该阅读这些[理解问题是什么](https://stackoverflow.com/q/3988788/2775450)。如果在阅读该文章并检查堆栈跟踪之后,仍然无法找出问题,请在问题中发布完整的堆栈跟踪,并显示代码中的哪一行引发异常。 –

+0

@James_D我试过,但因为我比较新,所以我不太确定他们的意思。很多都与应用程序中的异常有关。怪异的部分是当我注释掉for循环时,它工作正常。不知道发生了什么事。 –

+0

这就是为什么我链接解释如何读取堆栈跟踪的帖子。 –

回答

2

我怀疑你的问题源于这个奇怪的“最大20收藏夹”循环,它将尝试读取20行,无论文件是否包含它们(最终结果是它抛出一个NullPointerException少于20行,并且忽略超过20行)。看起来你试图通过只读一定数量的行来简化事情,所以你不必计算出要读多少行,但是在这样做的过程中实际上使事情变得更加复杂!

有在Java逐行读取整个文件行相当常见的成语 - 尝试更换您的循环(一个与counter作为迭代器)与此:

String line; 
while((line=format1.readLine())!=null) { 
    System.out.println(line); //Just used so I can make sure the 
    if (line.equals(input)) { 
     found = line; 
     break; 
    } 
} 
format1.close(); 

这将读取的每一行将文件转换为line,而从readLine()返回的值不是null,它将在达到文件结尾时返回。

+1

修好了!非常感谢。你是对的,我试图简化它。我现在看到,这是一个不好的举措。我会知道下一次该怎么做。 –