Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 写入文件JavaFx时出现问题_File_Javafx_Input_Output - Fatal编程技术网

File 写入文件JavaFx时出现问题

File 写入文件JavaFx时出现问题,file,javafx,input,output,File,Javafx,Input,Output,所以,我对编程和这个网站还是新手。 我一直在尝试制作自己的浏览器,只是为了好玩,我正在学习如何从文本文件中写入和读取,作为日志来保存数据。我正在尝试制作一个收藏夹系统,这样我可以将不同的网站保存到日志中,但我不明白为什么我的部分代码不起作用。我在网上花了大约两个半小时四处看看,没有发现任何问题 try(BufferedReader format1 = new BufferedReader(new FileRead

所以,我对编程和这个网站还是新手。 我一直在尝试制作自己的浏览器,只是为了好玩,我正在学习如何从文本文件中写入和读取,作为日志来保存数据。我正在尝试制作一个收藏夹系统,这样我可以将不同的网站保存到日志中,但我不明白为什么我的部分代码不起作用。我在网上花了大约两个半小时四处看看,没有发现任何问题

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.");
    }
try(BufferedReader format1=new BufferedReader(new
文件阅读器(“favorites.txt”)){
String line=format1.readLine();//用于查看文件
String found=“;//存储相同的地址
//循环搜索文件,我只计划最多有20个收藏夹
用于(int计数器=0;计数器<20;计数器++){
System.out.println(line);//只是为了确保
循环工程
if(行等于(输入)){
计数器=20;
发现=线;
}
line=format1.readLine();
}
format1.close();
如果(!(找到.等于(输入))){
BufferedWriter format2=新的BufferedWriter(新的
FileWriter(“favorites.txt”,true));
格式2.写入(输入);
format2.newLine();
format2.close();
}           
}捕获(IOE1异常){
System.out.println(“错误!未添加收藏夹”);
}

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

我怀疑您的问题源于这个奇怪的“max 20 Favorites”循环,它将尝试读取20行,无论文件是否包含它们(最终结果是它抛出小于20行的
NullPointerException
,忽略任何超过20行的内容)。看起来你试图通过只读一定数量的行来简化事情,这样你就不必计算出要读多少行,但在这样做的过程中,实际上让事情变得更复杂了

在Java中,一行一行地读取整个文件有一个相当常见的习惯用法-尝试将for循环(使用
计数器
作为迭代器的循环)替换为以下内容:

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
,当它到达文件末尾时,返回的值就不是
null了。

“它会吐出大量错误消息”。错误消息说了什么?你应该读给我听。如果在阅读了那篇文章并检查了堆栈跟踪之后,您仍然无法找出问题所在,请在问题中发布完整的堆栈跟踪,并显示代码中的哪一行引发异常。@James_D我尝试过,但由于我相对较新,我不太确定它们的意思。这与应用程序中的异常有很大关系。奇怪的是,当我注释掉for循环时,它工作得很好。不确定发生了什么。这就是为什么我链接了解释如何读取堆栈跟踪的帖子。这就解决了它!非常感谢。你说得对,我试图简化它。我现在明白了,那是一个糟糕的举动。我知道下次该做什么了。