Java的mkdir()与mkdirs()引发的悲剧---关于java的mkdir()方法无法创建文件目录失败问题

版权声明:转载请标注来源:https://me.csdn.net/qq_37844454 https://blog.csdn.net/qq_37844454/article/details/83107556

昨晚深夜在做项目的文件上传,在上传之前要先判断指定的文件目录是否存在,如果不存在就先创建改目录。

因为之前已经做过类似的功能了,所以就把判断文件目录以及创建的代码直接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()就行了。

猜你喜欢

转载自blog.csdn.net/qq_37844454/article/details/83107556