【问题标题】:How to get the content of an input stream in reverse order?如何以相反的顺序获取输入流的内容?
【发布时间】:2013-05-18 12:32:03
【问题描述】:

我正在使用 txt 文件进行关卡设计。我使用下面的内容获取内容并转换为字符串缓冲区,然后遍历这些行以生成我的游戏对象。

问题在于它是从上到下读取的,所以我必须将我的关卡设计颠倒才能使它们正确。

如何更改流以相反的方式读取?还是以相反的方式将这些行写入字符串生成器?

 private static String convertStreamToString(InputStream is) {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append((line + "\n"));
            }
        } catch (IOException e) {
            Log.w("LOG", e.getMessage());
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                Log.w("LOG", e.getMessage());
            }
        }
        return sb.toString();

【问题讨论】:

  • 字符串生成器的insert()方法不够用吗?

标签: java android bufferedreader stringbuilder


【解决方案1】:

您可以只使用sb.insert(0, line + "\n") 而不是sb.append(line + "\n");

这将始终在字符串的前面添加新行,而不是将其附加到末尾。应该完全按照您的意愿去做,并且会同样快,因为 StringBuilder 正是为这样的事情而制作的。

【讨论】:

  • 天才。感谢那。抱歉,我是个白痴,但您介意简要说明一下为什么会这样吗?
  • 感谢您花时间解释。
  • @Till Helge 会比附加到 sb 然后返回 sb.reverse().toString() 更快/更好
  • @artfullyContrived 不,但相比之下它是正确的。只有行的顺序是颠倒的,而不是整个字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 2021-10-13
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多