更正在Android中保存文件的路径

时间:2016-12-28 15:27:58

标签: android android-file

我正在尝试为Android编写应用程序,我需要从服务器保存resposne,我设法通过将其保存在此路径中的txt文件中来实现:

String path= "/storage/emulated/0/Android/data/com.example.simone.pizzino/files/response.txt"; final File file = new File(path);

在我朋友的手机上测试它无法看到该路径上的文件夹,他的路径类似于data/data/"packageName",它在Android Studio中的模拟器上也不起作用。 我的手机是运行7.1库存的Nexus 5X。 我的朋友使用6.1。 有没有办法获得应用程序文件夹的动态路径,而不必将其声明为常量?

很抱歉,如果已经提出这个问题,但我找不到解决问题的方法。

1 个答案:

答案 0 :(得分:3)

首先要做的是添加访问清单文件中外部存储的权限

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

在内部存储上保存文件

File file = new File(context.getFilesDir(), filename);
String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;

try {
 outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
 outputStream.write(string.getBytes());
 outputStream.close();
} catch (Exception e) {
   e.printStackTrace();
}

public File getTempFile(Context context, String url) {
   File file;
try {
    String fileName = Uri.parse(url).getLastPathSegment();
    file = File.createTempFile(fileName, null, context.getCacheDir());
} catch (IOException e) {
    // Error while creating file
}
return file;
}

在外部存储上保存文件

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
    return true;
}
return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
    Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    return true;
}
return false;
}

public File getAlbumStorageDir(String albumName) {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), albumName);
if (!file.mkdirs()) {
    Log.e(LOG_TAG, "Directory not created");
}
return file;
}