Java 如何在写入新文件之前检查文件是否已创建?

Java 如何在写入新文件之前检查文件是否已创建?,java,android,Java,Android,我使用androidstudio只是为了看看如何创建一个文件,或者如果一个文件已经存在,就使用现有的文件。到目前为止,我的代码是: public void saveFile(){ try{ FileOutputStream fOut = openFileOutput("current.xml", Context.MODE_APPEND); //OutputStream

我使用androidstudio只是为了看看如何创建一个文件,或者如果一个文件已经存在,就使用现有的文件。到目前为止,我的代码是:

              public void saveFile(){

            try{

            FileOutputStream fOut = openFileOutput("current.xml", 
            Context.MODE_APPEND);
            //OutputStreamWriter outputWriter = new 
             OutputStreamWriter(fOut);

            XmlSerializer serializer = Xml.newSerializer();
            serializer.setOutput(fOut, "UTF-8");
            serializer.startDocument(null, Boolean.valueOf(true));

            serializer.startTag(null, "records");
            serializer.startTag(null,"employee");
            serializer.startTag(null, "name");
            serializer.text("Ryan");
            serializer.endTag(null,"name");
            serializer.startTag(null,"surname");
            serializer.text("Derk");
            serializer.endTag(null,"surname");
            serializer.startTag(null,"salary");
            serializer.text("60000");
            serializer.endTag(null,"salary");
            serializer.endTag(null,"employee");
            serializer.endTag(null,"records");

            serializer.endDocument();
            serializer.flush();
            fOut.close();

            Toast.makeText(getApplicationContext(), "Save Successful", 
            Toast.LENGTH_LONG).show();

            }
            catch(Throwable t){

            Toast.makeText(getApplicationContext(), "Save Unsuccessful", 
            Toast.LENGTH_LONG).show();

        }


        }

         private static String getValue(String tag, Element element) {
         NodeList nodeList = 
         element.getElementsByTagName(tag).item(0).getChildNodes();
         Node node = nodeList.item(0);
         return node.getNodeValue();
        }

如何在保存到该文件之前检查该文件是否已创建?如果没有创建,创建文件?

只需使用
yourFile.exists()

您需要指向该文件并检查它是否存在

 File file = new File("C:\\file.txt");

    if(!file.exists()){
        System.out.println("file does not exist");
        //Do all your stuff here
    }

如果我正确理解您的问题:

  • 您需要有应用程序上下文
    android.content.Context
    来调用方法
    openFileOutput

  • 此外,要检查文件是否存在,可以调用
    Context.fileList()
    获取上下文中的文件列表并检查文件是否存在

    String[] files = fileList();
    for (String file : files) {
        if (file.equals(myFileName)) {
            //file exits
        }
    

对于我的案例,我所做的是添加以下方法:

       public Boolean checkFile(){

    Boolean myBool2 = false;
    File file  = getBaseContext().getFileStreamPath("current.xml");

    if(file.exists()){

        Toast.makeText(getApplicationContext(), "FileFound", 
    Toast.LENGTH_LONG).show();

    }

    else{

        Toast.makeText(getApplicationContext(), "No file found", 
    Toast.LENGTH_LONG).show();
        myBool2 = true;
    }
        return myBool2;

}

结果证明它是有效的!我只需要获得上下文,然后是文件流路径,它就找到了文件。感谢所有在这个问题上发表文章的人,它真的帮助我理解了我真正想做的事情

重复?可能是@AgainedThePatient的重复我实际上查看了这两个链接,但我一生都无法创建一个工作原型。如果有任何建议,我将非常感谢。简单-如果(!yourfile.existst()){doYourStuff}那么如果文件不存在,将执行所有代码,如果它存在也不会麻烦。取决于您是否要覆盖它。在第一次运行应用程序时,我希望将特定数据保存在文件中。我试着做if(!yourfile.exists()),但每次我按下保存按钮时,它仍然执行if语句。我试着这么做,但它一直进入if语句。我将if语句与参数if(!yourFile.exists)放在一起,但在第一次运行后,我再次按下按钮,它运行了第二次和第三次。当我试图加载itI时导致“处理指令不能以xml开头”,我现在正试图在try语句中写入。我有if(!fOut.exists),但我从中得到一个无法解析的符号。任何建议基本上,保存按钮是作为应用程序的第一次加载,然后如果您再次按下它而不是重新写入相同的信息,它将执行else语句(如果已经创建了文件)。由于我将xml文件添加到内部存储,我不知道该文件存储在目录中。我已经在androids网站上看过了,但是我找不到文件的实际位置。所以,当声明File=newfile时,我不知道该为参数指定什么。我明白了,你能再给我一点代码看看你在做什么吗?openFileOutput正在做什么?请随意下载:-这是一个公共项目。这是正确的,我调用write file方法来创建文件,然后写入。但我想知道,如果第二次调用该方法,它将检查文件是否已经创建,如果已经创建,则执行and else语句。这将用于当用户关闭应用程序并重新打开应用程序时,该文件将已创建,因此我们不希望再次创建该文件。如何才能做到这一点,我已尝试实现if(!filename.exists),但在创建它时,它仍会执行if语句。能否尝试以下代码:
File File=new File(path);如果(!file.isFile()){//file不存在}其他{//file确实存在}