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