现在我正在尝试使用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
....就像这种形式一样。
答案 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" />