参考:http://nannan408.iteye.com/blog/1335582
FileOutPutStream在c盘等一级目录下是可以创建文件的,如: new FileOutputStream("c:\\kk.txt");但是在c\\test等就创建不了,File也是一样,为什么呢?直接去看jdk,大概是为了防止随意创建文件对磁盘攻击吧。
因此“java.io.FileNotFoundException 系统找不到指定的路径"的问题会经常出现在我们的编程中,原因可能有三:
(1)文件名乱码。你工程的编码是 utf-8还是 gbk,如果是gbk那么小心文件名如果有中文,会乱码。
(2)没有创建文件夹,在没有文件夹情况下,创建文件将报错.解决方案为先创建文件夹,具体代码见下面。
(3)有文件夹,但文件所在位置无文件夹,即文件路径太深,超过二级。解决方案同2.
代码如下:
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; public class Test { public static void main(String[] args) { OutputStreamWriter osw = null; File directory = null; File file = null; try { String fileName = "D:" + File.separator + "fewlkfe" + File.separator + "分为2"; directory = new File(fileName); directory.mkdirs(); if (!directory.exists()) { return; } file = new File(fileName + File.separator + "哈哈2.csv"); file.createNewFile(); if (!file.isFile()) { return; } osw = new OutputStreamWriter(new FileOutputStream(file)); osw.write("few"); osw.flush(); } catch (Exception e) { } finally { try { osw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
但是我在实际编程中,一般用fos = this.openFileOutput(fileName, Context.MODE_WORLD_WRITEABLE);这句话即可。