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)。不知道这个思路是否正确。
判断一个文件是否存在,如果不存在则创建它,然后向此文件写入指定的内容。
下面是完整代码:
//-----------------------------------------------------------------------------------
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("写入成功!");
}
}
//-----------------------------------------------------------------------------------
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();
}
}
}
救命啊,哪里出问题了。头大····
提示你路径不对了,如果你是web项目,不能用绝对地址
你的fileName的值是什么?
如果只是文件名,那需要加上相对路径的;
如果是地址+文件名,那需要改成相对路径+文件名;
先判断文件目录是否存在,没有目录,文件也无法创建
把您的代码改成下面的就可以成功了,您只是少写了一个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("写入成功!");
}
}
}
你不光是文件没有吧,是不是连前面的文件夹也没有啊?createNewFile这个方法不能连带文件夹一起建,先把文件夹建出来mkdirs()这个