问题描述
- 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("rn"); 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("rn");
bw.flush();
System.out.println("写入成功!");
}
}
//-----------------------------------------------------------------------------------
解决方案二:
提示你路径不对了,如果你是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("rn");
bw.flush();
System.out.println("写入成功!");
}
}
}
解决方案六:
救命啊,哪里出问题了。头大····
解决方案七:
把您的代码改成下面的就可以成功了,您只是少写了一个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("rn");
bw.flush();
System.out.println("写入成功!");
}
}
}
解决方案八:
你不光是文件没有吧,是不是连前面的文件夹也没有啊?createNewFile这个方法不能连带文件夹一起建,先把文件夹建出来mkdirs()这个
解决方案九:
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();
}
}
}