我正在尝试在运行时创建一个文件并将其保存在Downloads目录中。我正在成功创建文件,如下面的屏幕截图所示,但我无法查看。
在下面的代码中,我正在检查权限,创建文件,写入文件并关闭它。然后我打印下载目录的内容,以便我可以确认该文件已经创建。是的!
Log.d("DOM", Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) + "");
// check for permission at runtime
if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
// create new file in downloads dir with name test.json
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "test.json");
if (!file.exists())
file.createNewFile();
file.setReadable(true, false);
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write("test string".getBytes());
fileOutputStream.close();
for (int i = 0; i < Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).listFiles().length; i++)
Log.d("DOM", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).listFiles()[i].getAbsolutePath() + "");
A screenshot of all the files in the Downloads directory.
问题是,如果我查看手机的下载应用程序,我看不到创建的文件。当我查看计算机上的文件夹时,我也看不到文件。
额外细节: 顺便说一句,我的清单......这不在应用程序标签中。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
以下行返回false(我之前将其打印到日志中)
file.setReadable(true, false);
此外,该应用仅请求了一次权限。我认为这正是应该发生的事情。