Как я читаю файл ресурсов из файла банки Java?

Хотя File.ReadAllLines() является одним из простейших способов чтения файла, он также является одним из самых медленных.

Если вы просто хотите читать строки в файле, не делая многого, в соответствии с этими критериями , самым быстрым способом чтения файла является старый метод:

using (StreamReader sr = File.OpenText(fileName))
{
        string s = String.Empty;
        while ((s = sr.ReadLine()) != null)
        {
               //do minimal amount of work here
        }
}

Однако, если вам приходится много делать с каждой строкой, тогда в этой статье делается вывод о том, что лучший способ заключается в следующем (и быстрее предварительно назначить строку [], если вы знаете, сколько строк вы собираетесь читать):

AllLines = new string[MAX]; //only allocate memory here

using (StreamReader sr = File.OpenText(fileName))
{
        int x = 0;
        while (!sr.EndOfStream)
        {
               AllLines[x] = sr.ReadLine();
               x += 1;
        }
} //Finished. Close the file

//Now parallel process each line in the file
Parallel.For(0, AllLines.Length, x =>
{
    DoYourStuff(AllLines[x]); //do your work here
});

57
задан Bill the Lizard 11 February 2009 в 20:38
поделиться

5 ответов

Проблема состояла в том, что я делал шаг слишком далеко в вызове метода синтаксического анализа XMLReader. Метод синтаксического анализа принимает InputSource, таким образом, не было никакой причины даже использовать FileReader. Изменение последней строки кода выше к

xr.parse( new InputSource( filename ));

работает просто великолепно.

4
ответ дан Bill the Lizard 7 November 2019 в 16:11
поделиться

Похож на Вас, хотят использовать java.lang.Class.getResourceAsStream(String), видеть

http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getResourceAsStream (java.lang. Строка)

59
ответ дан Erik Allik 7 November 2019 в 16:11
поделиться

Вы не говорите, является ли это настольным приложением или веб-приложением. Я использовал бы getResourceAsStream() метод от соответствующего ClassLoder, если это - рабочий стол или Контекст, если это - веб-приложение.

5
ответ дан Sumit Singh 7 November 2019 в 16:11
поделиться

Выглядит, как будто Вы используете эти URL.toString результат как аргумент FileReader конструктор. URL.toString немного повреждается, и вместо этого необходимо обычно использовать url.toURI().toString(). В любом случае строка не является путем к файлу.

Вместо этого Вы должны также:

  • Передача URL к ServicesLoader и позволяют ему звонить openStream или подобный.
  • Использование Class.getResourceAsStream и просто проходят через поток, возможно в InputSource. (Не забудьте проверять на пустые указатели, поскольку API немного грязен.)
4
ответ дан Tom Hawtin - tackline 7 November 2019 в 16:11
поделиться

За пределами Вашей техники почему бы не использовать стандартный класс Java JarFile для получения ссылок Вы хотите? Оттуда большинство Ваших проблем должно уйти.

0
ответ дан GaryF 7 November 2019 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: