Android应用 - 如何写入Android设备的Documents文件夹?

时间:2014-11-21 17:54:07

标签: android directory document

我想在Android应用中创建一个XML文件。 这个文件我要写入我的Android设备的文档文件夹中。 后来我想使用USB将我的Android设备连接到我的PC并从文档文件夹中读取该XML文件。 我的设备是Android Galaxy Tab Pro 10.1,Android 4.4.2。

我已经尝试过了:

String fileName = "example.xml";
String myDirectory = "myDirectory";

String externalStorage = Environment.getExternalStorageDirectory().getAbsolutePath();

File outputFile = new File(externalStorage + File.separator + myDirectory + File.separator + fileName);

但是没有创建文件。我还想稍后再将文件夹中的文件读入may app。

感谢任何帮助,谢谢!

4 个答案:

答案 0 :(得分:15)

我知道这已经很晚了,但你可以得到这样的文件目录:

File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
File file = new File(dir, "example.txt");

//Write to file
try (FileWriter fileWriter = new FileWriter(file)) {
fileWriter.append("Writing to file!");
} catch (IOException e) {
    //Handle exception
}

答案 1 :(得分:6)

在Android Manifest中设置权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

使用此代码写入外部目录

String fileName = "example.xml";
String dirName = "MyDirectory";
String contentToWrite = "Your Content Goes Here";
File myDir = new File("sdcard", dirName);

/*if directory doesn't exist, create it*/
if(!myDir.exists())
    myDir.mkdirs(); 


File myFile = new File(myDir, fileName);

/*Write to file*/
try {
    FileWriter fileWriter = new FileWriter(myFile);
    fileWriter.append(contentToWrite);
    fileWriter.flush();
    fileWriter.close();
}
catch(IOException e){
    e.printStackTrace();
}

答案 2 :(得分:1)

在创建文件之前,您必须创建用于保存文件的目录。 试试这个: -     String fileName =“example.xml”;     String myDirectory =“myDirectory”;

String externalStorage = Environment.getExternalStorageDirectory().getAbsolutePath();

File outputDirectory = new File(externalStorage + File.separator + myDirectory );

if(!outputDirectory.exist()){
    outputDirectory.mkDir();
}

File outputFile = new File(externalStorage + File.separator + myDirectory + File.separator + fileName);

outputFile.createFile();

答案 3 :(得分:0)

尝试重启设备,然后检查文件是否存在。如果是这样,您正在创建它(它看起来应该基于您的代码),但在您的设备上扫描媒体之前它不会显示。尝试实现MediaScannerConnectionClient,使其在创建后显示为可见。

public class MainActivity extends Activity implements MediaScannerConnectionClient {

private MediaScannerConnection msConn;
private File example;

...

@Override
protected void onCreate(Bundle savedInstanceState) {

    ...

    msConn = new MediaScannerConnection(this.getApplicationContext(), this);

    String dir = Environment.getExternalStorageDirectory() + "/Documents/";
    example = new File(dir, "example.xml");

    msConn.connect();

}

@Override
public void onMediaScannerConnected() {
    msConn.scanFile(example.getAbsolutePath(), null);
}

@Override
public void onScanCompleted(String path, Uri uri) {
    msConn.disconnect();
}