如何以相反的顺序获取输入流的内容?

时间:2013-05-23 08:24:06

标签: java android bufferedreader stringbuilder

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

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

如何更改流以相反的方式阅读?或者以相反的方式将行写入String Builder?

 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();

2 个答案:

答案 0 :(得分:6)

您可以使用sb.insert(0, line + "\n")代替sb.append(line + "\n");

这将始终在字符串的前面添加新行,而不是将其附加到结尾。应该完全按照自己的意愿行事,并且速度也一样快,因为StringBuilder完全适合这样的事情。

答案 1 :(得分:0)

您必须做的唯一选择是使用seek()功能......

我相信这是一个解决方案,但你使用的那个会更容易......

以下是如何使用搜索的示例:

http://mark.koli.ch/2010/01/java-jumptoline-jump-to-a-line-in-a-file.html