仅在不存在的字符串中添加一个字符串

时间:2019-09-13 10:37:38

标签: java file

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

试图在线查看如何确保文件存在,或者如何仅将String添加到文件(如果文件不存在,但是由于某种原因而无法使用)。

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

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

2 个答案:

答案 0 :(得分:0)

对于第一个,您可以使用以下内容:

File f = new File("F:\\program.txt"); 
if (f.exists()) 
    System.out.println("Exists"); 

答案 1 :(得分:0)

严格地说,我可能根本不使用exists(),只是使用异常路径:

File file = new File("s.txt");  // this is a file handle, s.txt may or may not exist
boolean found=false;  // flag for target txt being present
try(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");
  }
}