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

Java 在InputStream和FileInputStream之间切换的简单方法?,java,android,inputstream,fileinputstream,datainputstream,Java,Android,Inputstream,Fileinputstream,Datainputstream,我写了大量的代码,并将读取SD卡上的文本文件作为目标。 我刚刚意识到我还需要读取位于资产文件夹中的文本文件。 查看我在下面发布的代码。 如果有可能的话,我的问题就会解决。 不幸的是,显然不允许以这种方式使用IF语句。 目前,我唯一的选择是复制所有文件读取代码,并将其放在单独的AsyncTask线程中(我的文件读取代码当前位于AsyncTask后台线程中),但它大约有250行代码,因此如果我不必复制它会更好。 如有任何建议,将不胜感激 if (switchToAsset == 1); { Inp

我写了大量的代码,并将读取SD卡上的文本文件作为目标。
我刚刚意识到我还需要读取位于资产文件夹中的文本文件。
查看我在下面发布的代码。
如果有可能的话,我的问题就会解决。
不幸的是,显然不允许以这种方式使用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 = (switchToAsset == 1)
   ? getAssets().open(currentFilePath)
   : new FileInputStream(currentFilePath)

您不需要在标题中添加标记;-)也许这会有帮助?哦,没看到分号:)。。。我测试的时候它不在那里。非常感谢你的回答!很好用!我不必复制所有这些代码,这让我松了一口气。:)
 InputStream myStream = (switchToAsset == 1)
   ? getAssets().open(currentFilePath)
   : new FileInputStream(currentFilePath)