在编写android中出现出现java.io.FileNotFoundException的异常的时候我们首先会认为肯定是权限的问题,但是请不要轻易的下定论,于是想到的是添加如下权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
事实上如果你的错误提示中出现了诸如permission denied的字眼或者某些告诉你你的程序的权限不顾的字眼的时候你完全有理由这么做。
但如果你的错误提示中没有出现相关的字眼你就要考虑是不是其他原因导致了这个结果。
假设你的程序中出现了如下的错误提示,你就需要考虑是不是你的代码在打开一个不存在的目录项,如果是目录项不存在的话,请在程序中先确保目录项的存在性,可以先创建一个目录项。
java.io.FileNotFoundException: D:\jackli\hello.txt (系统找不到指定的路径。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at Test.main(Test.java:19)
最后面再来看一下还有一种错误提示,那就是文件名的使用有错,比如出新了非法字符,这个往往是在网络编程的时候比较容易出现。就像今天我的程序就是这样的,我发现由于网络传输过来的字符串看上去是正确的,但是却在文件名的末尾出现了一个非法字符'\n',这个真是很难发现的一个错误啊,以至于我花了两小时来找这个错误。
希望这个能对大家有所帮助。