在InputStream和FileInputStream之间切换的简单方法



我写了一大块代码,读取SD卡上的文本文件。
我刚刚意识到我还需要读取位于Assets文件夹中的文本文件。
查看我在下面发布的代码。
如果那样做是可能的,我的问题就解决了。不幸的是,以这种方式使用IF语句显然是不允许的。

目前,我唯一的选择是复制所有的文件读取代码,并把它放在一个单独的AsyncTask线程中(我的文件读取代码目前在AsyncTask后台线程中),但它大约有250行代码,所以如果我不复制它会更好。
如有任何建议,不胜感激。

if (switchToAsset == 1);
{
InputStream myStream = getAssets().open(currentFilePath);
}
else
{
FileInputStream myStream = new FileInputStream(currentFilePath);
}
DataInputStream in = new DataInputStream(myStream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
 InputStream myStream;
 if (switchToAsset == 1) { // having a semicolon here is BAD BAD BAD
   myStream = getAssets().open(currentFilePath);
 } else {
   myStream = new FileInputStream(currentFilePath);
 }

…或者更简洁地说…

 InputStream myStream = (switchToAsset == 1)
   ? getAssets().open(currentFilePath)
   : new FileInputStream(currentFilePath)

相关内容

  • 没有找到相关文章

最新更新