【问题标题】:Easy way to switch between InputStream and FileInputStream?在 InputStream 和 FileInputStream 之间切换的简单方法?
【发布时间】:2013-06-19 20:36:32
【问题描述】:

我写了一大段代码来读取位于 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));

【问题讨论】:

标签: java android inputstream fileinputstream datainputstream


【解决方案1】:
 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)

【讨论】:

  • 糟糕,没有看到分号:) ...我测试时它不存在。非常感谢您的精彩回答!完美运行!我不必复制所有代码,这让我松了一口气。 :)
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 2012-10-23
相关资源
最近更新 更多