将文件写入Android SD卡

时间:2016-03-02 05:43:30

标签: android android-sdcard

现在我正在尝试使用for循环创建一个基本上在SD卡上创建100个文件的应用程序。

我已经查看了很多相关的问题和帖子,我自己无法解决这个问题。我使用Android Studio的内置模拟器作为我的测试设备,因为我不想在我的实际手机上运行它...

无论如何,我创建了一个按钮,如果你点击它,它会在外部存储器上生成100个文件(这是我的意图-_-)。

到目前为止,我有这个,

for (int i=1; i <= 100; i++) {
 sdPath = Environment.getExternalStorageDirectory() + "/Android/";
 File file = new Files(sdPath + "hacked" + i);
  try{
    FileOutputStream fos = new FileOutputStream(file);
     fos.close();
     }catch (Exception e){Log.i("Failed to save", e.getMessage());
    }

到目前为止,这是文件创建的主要实现。我编辑了我的Manifest以包含编写外部存储的权限,但每次运行应用程序时都会收到/sotrage/0B01-3415/Android/hacked 1-100: open failed: EACCESS (Permission denied)消息。

有没有人碰巧知道造成麻烦的是什么?

另外我不明白的是,当我们使用Environment.getExternalStorageDirectory时,它究竟意味着什么?在我的实际手机中,目录就像/sdcard/Android/data ....就像这种形式一样。

3 个答案:

答案 0 :(得分:1)

这是您的需要

public void createFiles(View view)
{

    String path = new String(Environment.getExternalStorageDirectory().getAbsolutePath() + "/AndroidSample/");

    boolean res;

    for(int i = 1; i <= 100; i++) {
        path += String.valueOf(i);
        File file = new File(path);
        if (!file.exists()) {
            res = file.mkdirs();
        } else {
            res = false;
        }
        if(res == true)
        Log.d("File Created", String.valueOf(i));
    }
}
  

在清单xml文件android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE

上添加这两个权限

要在清单中添加权限,请参阅this

记住文件名如1,12,123 ...... ....

答案 1 :(得分:0)

您是否已在清单文件中的正确位置声明了权限

localhost:5000/web

希望它对你有所帮助。

答案 2 :(得分:0)

尝试使用以下代码:

String path = Environment.getExternalStorageDirectory().getAbsolutePath().toString();

for (int i=1; i <= 100; i++) {
    File file = new File(path, "/Android/" + "hacked" + System.currentTimeMillis() + "");

    try {
        if (!file.exists()) {
            file.createNewFile();
        }
    } catch (Exception e) {
        String errorMessage = "Your device doesn't support this action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

在清单文件中声明以下权限:

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

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