如何在Android 4.1.2上保存外部存储公共目录文档中的文件

如何在Android 4.1.2上保存外部存储公共目录文档中的文件,android,file,save,documents,Android,File,Save,Documents,我想在Android 4.1.2智能手机的documents目录下保存一个文件 此代码段: File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"test.txt"); 引发此异常: E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NoSuchFieldError: android.os.Envi

我想在Android 4.1.2智能手机的documents目录下保存一个文件

此代码段:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"test.txt");
引发此异常:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NoSuchFieldError: android.os.Environment.DIRECTORY_DOCUMENTS
当这一个工作时:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"test.txt"); 
但是我想把我的文件保存在我的文档目录中,而不是下载目录中。Ive read DIRECTORY_文档仅在Android 4.4及更高版本中提供。但我的智能手机上还有一个文件目录。那么,是否没有将其保存在文档中的解决方案

谢谢你的回答


Pebbles

您无法访问
目录\u文档
,因为它在Android 4.1.2中不存在。这意味着,尽管您的外部存储器中有一个文档目录,但它不是由
目录\u Documents
指向的(因为它不存在)。要解决这个问题,您必须创建不存在的目录,并手动获取该文件夹的路径

File docsFolder = new File(Environment.getExternalStorageDirectory() + "/Documents");
boolean isPresent = true;
if (!docsFolder.exists()) {
    isPresent = docsFolder.mkdir();
}
if (isPresent) {
    File file = new File(docsFolder.getAbsolutePath(),"test.txt"); 
} else {
    // Failure
}

Android的旧版本(来自Api 1)中有该文件夹,但4.4版(Api 19-Kitkat)中首先提供了字段目录_文档


我的解决方案是使用
环境。getExternalStorageDirectory()+“/Documents”
代替旧版Android版本的目录文档。

我的Android 6(ASUS Nexus 7)上不存在目录下载,即使在manifestEnvironment中使用WRITE\u外部存储,也无法通过mkdir()创建目录。getExternalStorageDirectory()返回一个文件。我想您需要添加getAbsolutePath()来获取字符串。连接“/文档”应该可以做到这一点。