Java: строки, созданные подстрокой, не рассматриваются как жестко закодированные строки - PullRequest
0 голосов
/ 21 ноября 2010

Дорогие все, я делаю простой декодер файлов для Android 2.2, который должен найти имя файла закодированного файла из заголовка. Затем это имя файла следует использовать в качестве имени файла для декодированного файла (как и следовало ожидать).

Имя файла определяется подстрокой name=, поэтому фактическое имя начинается через 5 знаков после этого. Строка читается BufferedReader и временно сохраняется в currLine.

По какой-то причине я не могу ни понять, ни найти в Интернете, строки не всегда кажутся строками ...

Когда я даю имя файла как

String fileOutName = "testfile.txt";<br> System.out.println("fileOutName contains: "+ fileOutName);<br> System.out.println("fileOutName type: "+ fileOutName.getClass());

Работает так, как должно. Однако чтение из файла не работает:

String fileOutName = currLine.substring((currLine.indexOf("name=")+5));

Не выдает ни выходного файла, ни исключения ввода-вывода. Хотя строка анализируется правильно: из строк отладки System.out, которые я нахожу для обоих случаев:

fileOutName contains: testfile.txt<br> fileOutName type: class java.lang.String

Кто-нибудь знает, почему это не сработает? : S

Спасибо

1 Ответ

2 голосов
/ 21 ноября 2010

Тьфу ... Конечно, подпрограмма substring также получала символ end of line, который явно не может быть в имени файла, но, очевидно, не возвращается printline:)

Так что это исправлено:

String fileOutName = currLine.substring((currLine.indexOf("name=")+5), currLine.length() -1);

Спасибо, что посмотрели на это и прокомментировали, просто поставив вопрос, ответ меня ударил ... Может кто-нибудь пометить мой ответ как правильный? Кажется, я не смогу сделать это в течение следующих двух дней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...