文件类File的createNewFile方法返回值为false时,用if else语句判断时怎么不返回else的输出呢?

king_wonder 2017-05-25 12:37:23
创建一个文件类的createNewFile方法时,用if-else语句判断时,当createNewFile语句返回false 时,为什么不执行else里面的语句求教?
代码如下:

如图,当file.createNewFile()返回false时不输出else里面的syste.out.println("创建文件失败");
然后目录创建方法mkdir()方法和目录树创建方法mkdirs()方法也是这样,求大神解惑?
...全文
635 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
李德胜1995 2017-05-25
  • 打赏
  • 举报
回复
文件如果不存在就会进入这里。。。

if(file.createNewFile()){
	System.out.println("创建成功。。。");
}else{
		System.out.println("创建失败。。。");
}
如果存在。。。直接走else了。。。不会进入上面的代码,所以无论文件是否存在都不会执行System.out.println("创建失败。。。");
李德胜1995 2017-05-25
  • 打赏
  • 举报
回复
引用 11 楼 king_wonder 的回复:
[quote=引用 2 楼 pany1209 的回复:] 文件如果不存在就会进入这里。。。

if(file.createNewFile()){
	System.out.println("创建成功。。。");
}else{
		System.out.println("创建失败。。。");
}
如果存在。。。直接走else了。。。不会进入上面的代码,所以无论文件是否存在都不会执行System.out.println("创建失败。。。");
我懂你的意思了内层的else写的多余了,除非文件不存在但是创建的时候系统出错了,但那样就不用考虑输出不是程序员的事了,我理解的对吗[/quote] 这种是正常情况。。。如果你要进入else,除非你文件不存在而且创建文件时失败,返回false,例如你往一个没有写入权限的文件夹创建文件,就会报拒绝访问的错误,而且打印文件创建失败。。。。

public static void main(String[] args) {
			createFile("E:/test/test.txt");//test文件夹没有写入权限。。。
	}
	public static void createFile(String s){
		File file=new File(s);
		if(!file.exists()){
			boolean bool=false;
			try {
				bool = file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			if(bool){
				System.out.println("创建成功。。。");
			}else{
				System.out.println("创建失败。。。");
			}
		}else{
			System.out.println("已经存在。。。");
		}
	}
逝如流水 2017-05-25
  • 打赏
  • 举报
回复
file.createNewFile()抛出异常了,所以没能执行else,倒不是返回false。 而异常又被你这个方法抛到外层去了。
king_wonder 2017-05-25
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
文件如果不存在就会进入这里。。。

if(file.createNewFile()){
	System.out.println("创建成功。。。");
}else{
		System.out.println("创建失败。。。");
}
如果存在。。。直接走else了。。。不会进入上面的代码,所以无论文件是否存在都不会执行System.out.println("创建失败。。。");
我懂你的意思了内层的else写的多余了,除非文件不存在但是创建的时候系统出错了,但那样就不用考虑输出不是程序员的事了,我理解的对吗
king_wonder 2017-05-25
  • 打赏
  • 举报
回复
引用 8 楼 evanweng 的回复:
用try,catch去捕获异常
我用try,catch捕获异常当文件已存在执行异常的时候再异常里写输出文件已存在的话运行结果还是不执行已存在的那句话
Jcon_ 2017-05-25
  • 打赏
  • 举报
回复
打个断点分步debug一下就知道执行到哪里出现问题了。然后你可以看一下出现的异常
evanweng 2017-05-25
  • 打赏
  • 举报
回复
用try,catch去捕获异常
Bubble丶 2017-05-25
  • 打赏
  • 举报
回复
文件创建失败应该不会执行去那里吧,如果这个文件有 直接跳到文件存在,如果没有就去创建并不会去执行文件打印失败
lvdaan 2017-05-25
  • 打赏
  • 举报
回复
createNewFiles: 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
cangfengluyu 2017-05-25
  • 打赏
  • 举报
回复
输出是什么,多提供一点信息
110成成 2017-05-25
  • 打赏
  • 举报
回复
引用 3 楼 aa663325 的回复:
[quote=引用 2 楼 pany1209 的回复:] 文件如果不存在就会进入这里。。。

if(file.createNewFile()){
	System.out.println("创建成功。。。");
}else{
		System.out.println("创建失败。。。");
}
如果存在。。。直接走else了。。。不会进入上面的代码,所以无论文件是否存在都不会执行System.out.println("创建失败。。。");
如果文件创建失败,file.createNewFile返回false,不就走System.out.println("创建失败吗");。你上面说的无论存在与否都不执行是什么意思? 求教[/quote] 楼上的意思 应该是指如果文件存在,直接走else 文件已存在,若不存在,执行createNewFile() 创建文件,这个api 是指此方法返回true,如果指定的文件不存在,并已成功创建。如果该文件存在,该方法返回false。 所以你上面判断了是不存在,所以是不会返回false的。
aa663325 2017-05-25
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
文件如果不存在就会进入这里。。。

if(file.createNewFile()){
	System.out.println("创建成功。。。");
}else{
		System.out.println("创建失败。。。");
}
如果存在。。。直接走else了。。。不会进入上面的代码,所以无论文件是否存在都不会执行System.out.println("创建失败。。。");
如果文件创建失败,file.createNewFile返回false,不就走System.out.println("创建失败吗");。你上面说的无论存在与否都不执行是什么意思? 求教

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧