使用'FileWriter'在Android上的SD卡上写入文本文件

问题描述:

我已经研究了一段时间的这个问题,我只找到了非常复杂的答案,所以我很困惑。请记住,我不是一个专家程序员,所以不要指望我知道这件事!使用'FileWriter'在Android上的SD卡上写入文本文件

所有我想要做的是打印字符的新行位于Android的SD卡的下载文件夹中的文本文件。我将模拟器设置为拥有SD卡,并将文本文件放入下载文件夹中。这段代码用于数据库类,它将访问SD卡中的文本文件以读取数据。我知道这个类在Android之外工作,所以假设所有的方法都是按照他们应该读取数据的方式工作的!

我得到一个IOException当我运行在另一类这个方法:

public void addRecordToDataBase(ChildRecord c) throws IOException 
{ 
    FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt"); 
    PrintWriter out = new PrintWriter(outFile); 
    out.println(c.printToDataBase()); 
    out.close(); 
} 

奇怪的是,我可以使用相同的路径从数据库只是在其他方法精细读;那里没有问题。我只是不能写信给它。我读过一些地方,你可以使用“普通的Java方法”在Android上写入SD卡,而不会在整个地方出现那些疯狂的“OutputStream”事物。这是真的?我调试这件事情,并发现的是抛出异常的代码行就在这里:

FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt"); 

如果任何人有任何想法,为什么我这个迷途IOException异常,我会很感激!我尝试了所有Android想使用的疯狂方法,但我认为我迷失了方向,所以我只是恢复了我知道该怎么做的方法。

非常感谢!

我的猜测是你不能通过写入权限来访问这样的目录,至少是这种方式。您是否看过http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

该引用而这一次(http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)),解释getExternalFilesDir是如何工作的,可能对你有所帮助!

+0

我看了看这个,它开始变得更有意义了。 getExternalFilesDir()和我之间有什么区别?不getExternalFilesDir()获取外部磁盘的路径?我已经验证我的代码确实可以访问外部磁盘(一张SD卡,我也应该澄清,这不需要在每部手机上工作,只需要一部特定的手机)。 – Thanizer

您是否在应用清单文件中声明了WRITE_EXTERNAL_PERMISSION权限?