JAVA中如何判断一个文件是否存在,如果不存在则创建它?

JAVA中如何判断一个文件是否存在,如果不存在则创建它?
求帮助
源码如下:

 public void SaveFile(String fileName,String content) throws IOException{
        File file =new File(fileName);
        if(!file.exists()){       
            System.out.println("不存在");
            System.out.println(file.createNewFile());
            file.createNewFile();
        } 
        FileOutputStream fos = new FileOutputStream(file,true);
        OutputStreamWriter out =new OutputStreamWriter(fos,"utf-8");
        BufferedWriter bw = new BufferedWriter(out);
        bw.write(content);
        bw.write("\r\n");
        bw.flush();
    }

每次执行都提示我:

 不存在
java.io.IOException: 系统找不到指定的路径。
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:883)
    at com.sdzw.test.dao.FilesDAO.SaveFile(FilesDAO.java:24)
    at com.sdzw.test.dao.BaiduDAO.saveBaijia(BaiduDAO.java:126)
    at com.sdzw.test.test.BaiduTest.RunBaidu(BaiduTest.java:35)
    at com.sdzw.test.test.BaiduTest.main(BaiduTest.java:17)

非常感谢各位的帮助,小弟已经知道了。我这个地方最大的错误是我给的路径是相对路径,应该是绝对路径。
现在小弟的思路是先获取当前程序所在的绝对路径(如: E:CSDN/Test/),然后添加上要新建的文件(/Demo1.txt),使之组成一个新的绝对路径(E:CSND/Test/Demo1.txt)。不知道这个思路是否正确。

8个回答

判断一个文件是否存在,如果不存在则创建它,然后向此文件写入指定的内容。
下面是完整代码:

//-----------------------------------------------------------------------------------
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class FindFile {

public static void main(String[] args) throws IOException 
{
    new FindFile().saveFile("E:/test.txt", "test");
}
public void saveFile(String fileName,String content) throws IOException
{
    File file =new File(fileName);
    if(!file.exists())
    {       
        System.out.println("不存在");
        System.out.println(file.createNewFile());
        file.createNewFile();
    }

        FileOutputStream fos = new FileOutputStream(file,true);
        OutputStreamWriter out =new OutputStreamWriter(fos,"utf-8");
        BufferedWriter bw = new BufferedWriter(out);
        bw.write(content);
        bw.write("\r\n");
        bw.flush();
        System.out.println("写入成功!");


}

}
//-----------------------------------------------------------------------------------

提示你路径不对了,如果你是web项目,不能用绝对地址

你的fileName的值是什么?
如果只是文件名,那需要加上相对路径的;
如果是地址+文件名,那需要改成相对路径+文件名;

先判断文件目录是否存在,没有目录,文件也无法创建

你不光是文件没有吧,是不是连前面的文件夹也没有啊?createNewFile这个方法不能连带文件夹一起建,先把文件夹建出来mkdirs()这个

救命啊,哪里出问题了。头大····

把您的代码改成下面的就可以成功了,您只是少写了一个else条件:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class FindFile {

public static void main(String[] args) throws IOException 
{
    new FindFile().saveFile("E:/test.txt", "test");
}
public void saveFile(String fileName,String content) throws IOException
{
    File file =new File(fileName);
    if(!file.exists())
    {       
        System.out.println("不存在");
        System.out.println(file.createNewFile());
        file.createNewFile();
    }else
    {
        FileOutputStream fos = new FileOutputStream(file,true);
        OutputStreamWriter out =new OutputStreamWriter(fos,"utf-8");
        BufferedWriter bw = new BufferedWriter(out);
        bw.write(content);
        bw.write("\r\n");
        bw.flush();
        System.out.println("写入成功!");
    }

}

}

File file = new File("C:/testFTP/src/com/shine/config/dir.xml");
File parentFile = file.getParentFile();
Boolean bn = false;
if(!file.exists()){
bn = parentFile.mkdirs();
if(bn){
try {
bl = file.createNewFile();

                } catch (IOException e) {
                    System.out.println("创建文件失败");
                    e.printStackTrace();
                }
            }
        }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!