2

我想为存储在手机下载文件夹中的文件创建一个输入流。早些时候,我将所需的文件作为资产,并使用以下代码读取它:

InputStream fin;
fin = getAssets().open(FILENAME);

但是现在我希望能够将存储在我的下载文件夹中的文件/mnt/sdcard/Download作为 InputStream而不是作为 FileInputStream 对象打开。我正在使用一个只需要 InputStream 作为参数的库,所以我不能使用 FileInputStream 方法,因为fatal exception如果我这样做并且应用程序停止,我会得到一个。

我该怎么做?我试图从文档中找到一些辅助函数,但找不到。

编辑:我也尝试将代码编辑为此-

String path = "/mnt/sdcard/Download"+FILENAME;
fin = new BufferedInputStream(new FileInputStream(path));

但是,当我尝试读取文件时,应用程序仍然崩溃。

4

1 回答 1

0

我和你有同样的问题:

AssetManager am=getAssets();
InputStream is=am.open("file1.xls");
InputStream is = new FileInputStream(filepath);
Workbook wb = Workbook.getWorkbook(is);

在这里,我曾经从 assets 文件夹中访问 file1.xls。

我使用以下方法修复了它:

File filepath = newFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+"file1.xls");  // fist part gets the directory of download folder and last part is your file name
InputStream is = new FileInputStream(filepath);
Workbook wb = Workbook.getWorkbook(is);

不要忘记先获得存储权限才能访问存储。

于 2021-10-21T19:17:55.807 回答