所以我的程序是这样工作的:它从dropbox中下载一个.txt文件,并将其保存到下载目录中。
Uri uri = Uri.parse(file);
DownloadManager.Request r = new DownloadManager.Request(uri);
// This put the download in the same Download dir the browser uses
r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "upload");
r.allowScanningByMediaScanner();
// Start download
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(r);
代码运行良好,它下载了名为upload.txt的文件。所以现在我想读一下。我一直在寻找一些代码,但似乎什么都不起作用
这是我当前的代码,它抛出一个FileNotFoundException,但文件位于那里
有什么建议吗?
String text="";
FileInputStream Fin=new FileInputStream(Environment.DIRECTORY_DOWNLOADS+"upload");
byte[] b=new byte[100];
Fin.read(b);
text=new String(b);
Fin.close();
Ofc我试过放"upload.txt",甚至"/upload"one_answers"/upload.txt",但仍然没有
如果有人能给我读文本文件的代码,那就太棒了,或者如果有人给我一个代码,可以从html网站获得源代码(没有JSOUP和其他解析器,我已经尝试过了,我想实现我自己的解析器)。谢谢
更改
FileInputStream Fin=new FileInputStream(Environment.DIRECTORY_DOWNLOADS+"upload");
至
FileInputStream Fin=new FileInputStream(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "upload"));
您应该使用Environment.getExternalStoragePublicDirectory
来获取路径。
或者如果你喜欢更多,
FileInputStream Fin=new FileInputStream(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/upload");
更改
r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "upload");
也有
r.setDestinationInExternalPublicDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "upload");
我花了很长时间,但最终:您应该在清单中添加各种权限(android.permission.READ_EXTERNAL_STORAGE…)
但这还不够!您应该在onCreate():中明确请求这些权限
requestPermissions({android.permission.READ_EXTERNAL_STORAGE,…},200);
只有在之后,您才能访问这些目录。