使用String而不是本地文件缓存联机文件内容

时间:2010-08-25 03:02:14

标签: android

我正在从example.com/test.txt下载文本文件,我只在应用程序的运行时间内需要内容,不需要将它们保存到静态文件中。

到目前为止我的代码:

            InputStream input = new BufferedInputStream(getURL.openStream());
            OutputStream output = new FileOutputStream(tempFile);

            byte data[] = new byte[1024];

            long total = 0;

            while ((count = input.read(data)) != -1) {
                output.write(data, 0, count);
            }

            output.flush();
            output.close();
            input.close();

我如何将在线文件内容写入String而不是在本地保存文件?我曾尝试将data附加到while语句中的String,但只是出现乱码(正如预期的那样,但我不知道还能做什么)。将byte转换回String?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

而不是FileOutputStream使用ByteArrayOutput流。然后,您可以调用toString将其转换为字符串。

        InputStream input = new BufferedInputStream(getURL.openStream());
        OutputStream output = new ByteArrayOutputStream();

        byte data[] = new byte[1024];

        long total = 0;

        while ((count = input.read(data)) != -1) {
            output.write(data, 0, count);
        }

        output.flush();
        output.close();
        input.close();
        String result = output.toString();

答案 1 :(得分:1)

您可以使用类似于here所述的方法。

来自Java文档的代码段:

URL yahoo = new URL("http://www.yahoo.com/");
BufferedReader in = new BufferedReader(
            new InputStreamReader(
            yahoo.openStream()));

String inputLine;

while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);

in.close();

您只需要将每一行附加到String而不是将其发送到System.out。