昨晚深夜在做项目的文件上传,在上传之前要先判断指定的文件目录是否存在,如果不存在就先创建改目录。
因为之前已经做过类似的功能了,所以就把判断文件目录以及创建的代码直接copy过来了,然而很郁闷的是,一模一样的代码,这回却遇到一个特别奇葩的问题:
一下是昨晚我要判断的文件目录:
ServletContext context = ServletActionContext.getServletContext();
// 获得当前web应用所在目录下file文件夹的绝对路径
String path = context.getRealPath("/CloudSpaceFile/CustomerFile/"
+ customerName + "/" + typesName + "/");
File f = new File(path);// 判断文件夹是否存在,如果不存在就创建
if (!f.exists()) {
f.mkdir();
System.out.println("editCustApplicaAction.add()文件夹不存在------------"+f);
}
boolean t = f.exists();
if (t == true) {
System.out.println("真的//////");
}else {
System.out.println("假的的//////");
}
一下则是我之前做的目录判断、创建等功能的代码:
ServletContext context = ServletActionContext.getServletContext();
// 获得当前web应用所在目录下file文件夹的绝对路径
String path = context
.getRealPath("/CloudSpaceFile/ResourceFile/SystemApplication/"
+ typesName + "/");
//System.out.println("editCustApplicaAction.add()+++++++++++++++++++"+path);
File f = new File(path);// 判断文件夹是否存在,如果不存在就创建
if (!f.exists()) {
f.mkdir();
}
因为是凌晨了,宿舍断网了,所以不能查找想要的知识,只能自己琢磨出现这种问题的原因,结果搞了大半天也没弄清楚原因。
现在查找了资料才知道问题所在:
其中第二次的customerName以及typesName是用户的用户名以及他所选择的文件名,其中 customerName 这个文件目录之上的目录已经存在的,也就是说,我现在要判断“/CloudSpaceFile/CustomerFile/” 这个目录下的 customerName 这个文件夹是否存在,以及customerName这个文件夹下面的typesName这个文件夹也是否存在(也就是说,这里有可能要创建多层目录)。
而第一次的的“/CloudSpaceFile/CustomerFile/”目录已经存在了,要判断的是“typesName”这个目录是否存在,也就是说这里只要创建一层目录。
问题就出在这里!!!:
我用创建单层目录的mkdir()方法去创建多层目录!!!
知道问题所在以后就容易解决了:
只要把调用的方法mkdir()改为mkdirs()就行了。