Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:创建文件或目录(如果不存在)_Java_File_Exception Handling_Io_Nullpointerexception - Fatal编程技术网

Java:创建文件或目录(如果不存在)

Java:创建文件或目录(如果不存在),java,file,exception-handling,io,nullpointerexception,Java,File,Exception Handling,Io,Nullpointerexception,我的类获取一个包含路径(dir1/dir2/abc.txt)或文件(def.txt)的字符串,我希望写入/读取该文件。如果文件不存在,我想创建目录(如果有)和文件 到目前为止,我的类构造函数(“pfad”是一个实例变量): public SerializedFahrzeugDAO(字符串路径){ pfad=路径; 试一试{ FileInputStream filein=新的FileInputStream(pfad); ObjectInputStream in=新的ObjectInputStrea

我的类获取一个包含路径(dir1/dir2/abc.txt)或文件(def.txt)的字符串,我希望写入/读取该文件。如果文件不存在,我想创建目录(如果有)和文件

到目前为止,我的类构造函数(“pfad”是一个实例变量):

public SerializedFahrzeugDAO(字符串路径){
pfad=路径;
试一试{
FileInputStream filein=新的FileInputStream(pfad);
ObjectInputStream in=新的ObjectInputStream(filein);
List liste=(List)在.readObject()中;
in.close();
FileOutputStream fileout=新的FileOutputStream(pfad);
ObjectOutputStream out=新的ObjectOutputStream(fileout);
out.writeObject(liste);
out.close();
}
捕获(例外f){
if(f instanceof FileNotFoundException){
试一试{
文件ziel=新文件(pfad);
File dir=新文件(ziel.getParentFile().getAbsolutePath());
dir.mkdirs();
FileOutputStream fileout=新的FileOutputStream(pfad);
ObjectOutputStream out=新的ObjectOutputStream(fileout);
List newlist=newarraylist();
out.writeObject(newlist);
out.close();
}
catch(异常y){System.out.println(y);}
}
else{System.out.println(f);}

它适用于“dir/file.txt”等路径,但如果我只输入一个文件名,我会得到一个
NullPointerException

,而没有堆栈跟踪,我假设,异常发生在这里:

            File dir= new File(ziel.getParentFile().getAbsolutePath());
ziel
没有父对象,因此
ziel.getParentFile()
null

您可以首先转换为绝对路径,然后获取父路径


编辑(1):

您应该改进错误处理

        catch(Exception y){System.out.println(y); }
不打印stacktrace。应改用
y.printStackTrace()
(或适当的日志框架)


编辑(2):


与其捕获
FileNotFoundException
,不如使用
java.io.file

的方法检查文件是否存在,而不使用堆栈跟踪,我假设异常发生在这里:

            File dir= new File(ziel.getParentFile().getAbsolutePath());
ziel
没有父对象,因此
ziel.getParentFile()
null

您可以首先转换为绝对路径,然后获取父路径


编辑(1):

您应该改进错误处理

        catch(Exception y){System.out.println(y); }
不打印stacktrace。应改用
y.printStackTrace()
(或适当的日志框架)


编辑(2):


与其捕获
FileNotFoundException
,不如使用
java.io.file
的方法检查文件是否存在。仔细查看堆栈跟踪。引发的异常在哪里?发布整个堆栈跟踪,以便我们可以提供帮助。仔细查看堆栈跟踪。引发的异常在哪里?发布整个堆栈跟踪,以便我们可以一个可能的帮助。谢谢你的回答,我会马上检查。很抱歉缺少Stacktrace,大约一周前我不得不开始为一个大学项目学习Java,所以我基本上不知道我在做什么。谢谢你,你是对的。当你不加思考地使用stackoverflow中的代码时就会发生这种情况。谢谢你的回答,w我马上检查一下。很抱歉Stacktrace丢失了,大约一周前我不得不开始为一个大学项目学习Java,所以我基本上不知道我在做什么。谢谢你,你是对的。当你不用思考就直接使用stackoverflow的代码时,就会发生这种情况。。