今天玩io流,使用 FileInputStream 和 FileOutputStream 来读取和写入硬盘数据时,出现了 java.io.FileNotFoundException: E:\aa\music\野狼disco1.mp3 (系统找不到指定的路径。) ,出现这种情况一般从以下几点排除:
1. 路径书写格式有问题,File需要的是绝对路径,windows系统反斜杠需要两个,第一个是转义符;正斜杠一个就行。
2. 文件不存在该路径下。 值得一提的是,如果只是使用File来操作,即使文件不存在也不会报错,但是如果使用流(InputStream和OutputStream等子类)来操作文件的数据,那么就会报java.io.FileNotFoundException: E:\aa\music (系统找不到指定的路径。)。另外,如果使用输出流写出数据时,如果文件的上级目录不存在,也会报 java.io.FileNotFoundException: E:\aa\music (系统找不到指定的路径。)
3. 编码格式有问题,windows系统一般默认是Unicode格式,编程工具我们一般都会修改为utf-8
4.权限问题
根据我的经历而言,刚开始学习IO流,这种错误一般存在与第一点和第二点:
路径要全英文输入格式,很多时候冒号会被写成中文标点。路径要写成绝对路径,从盘符开始,如果是程序中的资源,就使用虚拟路径。
第二种常犯错误就是傻傻的分不清文件不存在时,什么时候是自动创建文件,什么时候是抛出异常。如果是创建文件或文件夹时,当文件不存在时,会自动创建。如果是使用流来操作文件数据,那么就会抛出异常。
多用多想,习惯就好了。