猿问

仅当字符串不存在时才将其添加到文件中

我正在自学 Java,遇到了一个我不知道如何解决的问题。我基本上想检查两件事: 1. 如果文件不存在 - 创建它!如果是这样,则什么也不做。2. 如果文件包含给定的字符串,则不执行任何操作,如果不包含它 - 添加它!(不要覆盖它)第二个更重要,但我也无法弄清楚第一个。


尝试在线查找如何确保文件存在,或者如何仅在文件不存在时将字符串添加到文件中,但由于某种原因它不起作用。


main{        

String s;

FileWriter fw = new FileWriter("s.txt", true);

            File file = new File("s.txt");

            doesStringExist(s,fw);   


public void doesStringExist(String s, FileWriter fw) throws IOException {

        String scan;

        BufferedReader bReader = new BufferedReader(new FileReader(String.valueOf(fw)));

        while ((scan = bReader.readLine()) != null) {

            if (scan.length() == 0) {

                continue;

            }

            if(scan.contains(s) {

                System.out.println(s + " already exists in S.txt");

            }else{

                fw.write(s);

            }

        }

    }









// I made a different method for checking if it exists or not because i just like it like that being more organized

目前我希望代码只检查字符串是否存在,如果存在,则不执行任何操作(发送存在消息),如果不存在,则将其添加到文件中。我也想这样做,以便它检查文件是否存在。


莫回无
浏览 108回答 2
2回答

慕婉清6462132

严格来说我可能根本不会使用exists(),只需使用异常路径:File file = new File("s.txt");  // this is a file handle, s.txt may or may not existboolean found=false;  // flag for target txt being presenttry(BufferedReader br=new BufferedReader(new FileReader(file))){  String line;  while((line=br.readLine())!=null)  // classic way of reading a file line-by-line    if(line.equals("something")){      found=true;      break;  // if the text is present, we do not have to read the rest after all    }} catch(FileNotFoundException fnfe){}if(!found){  // if the text is not found, it has to be written  try(PrintWriter pw=new PrintWriter(new FileWriter(file,true))){  // it works with                                                                   // non-existing files too    bw.println("something");  }}

红糖糍粑

对于第一个,您可以使用以下内容:File f = new File("F:\\program.txt"); if (f.exists())     System.out.println("Exists"); 
随时随地看视频慕课网APP

相关分类

Java
我要回答