Кэшируйте содержимое онлайн-файла в String, а не в локальный файл

1

Я загружаю текстовый файл из 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 в String в while-statement, но просто получить искаженный текст (как и ожидалось, но я не знаю, что еще делать). Преобразовать byte назад в строку?

Спасибо за вашу помощь!

Теги:

2 ответа

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();
  • 0
    Работает отлично, спасибо за быстрый ответ!
1

Вы можете использовать метод, аналогичный описанному здесь.

Фрагмент кода из документов 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();

Вам просто нужно добавить каждую строку в строку, а не отправлять ее в System.out.

  • 0
    Конкатенация строк через оператор + не так эффективна. Вам лучше использовать StringBuilder.
  • 0
    Работает так же, спасибо :-)!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню