Java читать файл до символа

Как прочитать текстовый файл в Java?

В Java все, кроме примитивных типов, есть объекты. Все эти объекты организованы в пакеты. Пакеты — это просто способ организации хранения Java-кода. Например, если у Вас есть следующая структура папок:

com
example
HelloWorld.java

, где com и example — это папка и подпапка, а HelloWorld.java — файл, то для доступа к этому файлу надо будет написать такой код:

Как видите, название пакета в Java отражает структуру папок, в которой лежат файлы.

Для чтения файлов любых типов, будь то бинарных или текстовых в Java IO APIинтерфейсе ввода/вывода Java предусмотрено два вида интерфейсов — потоки (streams) и читатели (readers). Потоки (streams) используются для чтения данных произвольного типа, т.е. бинарных данных, а читатели (readers) — для чтения символьных данных. А так как текстовый файл представляет собой набор символьных данных, то для чтения текстовых файлов в Java нужно использовать реализации интерфейса Reader.

Читать текстовые файлы в Java можно несколькими способами: с помощью классов FileReader, BufferedReader или Scanner. Каждый из указанных классов обладает определенными функциональными особенностями: так например, BufferedReader обеспечивает буферизацию данных для более быстрого чтения, а Scanner — предоставляет возможности для лексического разбора текста.

Чтение текста используя FileReader

Класс FileReader является базовой реализацией интерфейса Reader. В качестве параметров конструктор данного класса принимает путь к файлу, который необходимо прочитать. Также данный класс предоставляет ряд переопределенных методов для чтения одного символа, символов в массив и т.д.

// файл ReadFile.java
// импортируем необходимые классы
// без них компилятор выдаст ошибку
import java.io.FileReader;
import java.io.IOException;

// класс ReadFile находится в файле ReadFile
class ReadFile
// статический метод для чтения файла
public static void readTxtFile(String fileName)

// блок try/catch необходим, так как в результате
// чтения файла могут возникнуть ошибки
try

// создаем экземпляр класса FileReader
FileReader tfr = new FileReader(fileName);
// создаем в памяти буфер для чтения 8Кб символов за раз
char[] buffer = new char[8096];

// до тех пор пока есть символы в файле, читаем данные
// и выводим в консоль
while (chars != -1) System.out.println(String.valueOf(buffer, 0, chars));
chars = tfr.read(buffer);
>

// отлавливаем исключение
> catch (IOException e) e.printStackTrace();
>

public static void main(String[] args) readTxtFile(«C:/Documents/MyFile.txt»);
>

// Вывод файла MyFile.txt
Раз, два, три

Код хорошо комментирован, но я поясню еще пару моментов. Из листинга кода видно, что вместо чтения одного символа за раз я читаю сразу много символов в массив char. Такой способ более эффективен по сравнению с использованием метода read(), который читает по одному символу за раз, и соответственно, каждый раз обращается к файлу. Метод read(char[]) же, наоборот, при одном обращении читает сразу столько символов сколько помещается в массив переданный ему аргументом. Такой метод обеспечивает более эффективное чтение файла, так вместо одного символа читается сразу много символов.

Читайте также:  Css and html templates with code

В данном примере я использую буфер объемом в 8KB (8096 байт). Чтение продолжается до тех пор пока метод read(char[]) не вернет -1, что свидетельствует о конце файла.

Таким образом, чтение текстовых файлов в Java не представляет особой трудности и показанный здесь пример — это только один из множества способов чтения файлов в Java.

Создано 25.06.2019 13:49:43

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Чтение из файла до определенного символа в Java

    У меня есть текстовый файл, который включает sql-запросы.
    Каждый запрос заканчивается на «;».
    Я хочу выполнить эти запросы.
    Вот моя проблема; Я хочу прочитать файл до «;» а затем выполните запрос, который я прочитал.
    Я могу читать и выполнять однострочные запросы, но я не могу прочитать весь запрос с более чем одной строкой. Вот код, который я написал:

    **INSERT INTO tb_hukuk_ihbar ( id, hizmet_id, create_user_id, mektup_pdf, mektup_no, mektup_pdf_sayfa_no, ihbar_donemi) VALUES ( 3672961, 1244494, 566, './FESIH20110721-123-001', '1107/001-003672961', 1, '201107');** INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 55367968, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 34811016, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 53849639, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 40120622, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 49865422, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 51456657, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 41151378, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 33450635, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 37954783, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 56885453, '94.6'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 56893779, '86.5'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672961, 36398959, '14'); **INSERT INTO tb_hukuk_ihbar ( id, hizmet_id, create_user_id, mektup_pdf, mektup_no, mektup_pdf_sayfa_no, ihbar_donemi) VALUES ( 3672962, 2458406, 566, './FESIH20110721-123-001', '1107/001-003672962', 2, '201107');** INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 53217996, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 51120970, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 36684544, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 40994810, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 38081806, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 49433813, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 35098768, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 30013966, '22'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 27578939, '22.85'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 28833729, '22'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 31258381, '18'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 55709156, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 33770763, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 32499838, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 39801860, '14'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 56882759, '81.7'); INSERT INTO tb_hukuk_ihbar_detay( ihbar_id, fatura_id, odenmeyen_miktar) VALUES( 3672962, 56942137, '98.7'); 

    Источник

    Читайте также:  Скрипт php для учета

    Java читать файл до символа

    Хотя с помощью ранее рассмотренных классов можно записывать текст в файлы, однако они предназначены прежде всего дл работы с бинарными потоками данных, и их возможностей для полноценной работы с текстовыми файлами недостаточно. И для этой цели служат совсем другие классы, которые являются наследниками абстрактных классов Reader и Writer .

    Запись файлов. Класс FileWriter

    Класс FileWriter является производным от класса Writer. Он используется для записи текстовых файлов.

    Чтобы создать объект FileWriter, можно использовать один из следующих конструкторов:

    FileWriter(File file) FileWriter(File file, boolean append) FileWriter(FileDescriptor fd) FileWriter(String fileName) FileWriter(String fileName, boolean append)

    Так, в конструктор передается либо путь к файлу в виде строки, либо объект File, который ссылается на конкретный текстовый файл. Параметр append указывает, должны ли данные дозаписываться в конец файла (если параметр равен true), либо файл должен перезаписываться.

    Запишем в файл какой-нибудь текст:

    import java.io.*; public class Program < public static void main(String[] args) < try(FileWriter writer = new FileWriter("notes3.txt", false)) < // запись всей строки String text = "Hello Gold!"; writer.write(text); // запись по символам writer.append('\n'); writer.append('E'); writer.flush(); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >

    В конструкторе использовался параметр append со значением false — то есть файл будет перезаписываться. Затем с помощью методов, определенных в базовом классе Writer производится запись данных.

    Чтение файлов. Класс FileReader

    Класс FileReader наследуется от абстрактного класса Reader и предоставляет функциональность для чтения текстовых файлов.

    Для создания объекта FileReader мы можем использовать один из его конструкторов:

    FileReader(String fileName) FileReader(File file) FileReader(FileDescriptor fd)

    А используя методы, определенные в базом классе Reader, произвести чтение файла:

    import java.io.*; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < // читаем посимвольно int c; while((c=reader.read())!=-1)< System.out.print((char)c); >> catch(IOException ex) < System.out.println(ex.getMessage()); >> >

    Также мы можем считывать в промежуточный буфер из массива символов:

    import java.io.*; import java.util.Arrays; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < char[] buf = new char[256]; int c; while((c = reader.read(buf))>0) < if(c < 256)< buf = Arrays.copyOf(buf, c); >System.out.print(buf); > > catch(IOException ex) < System.out.println(ex.getMessage()); >> >

    В данном случае считываем последовательно символы из файла в массив из 256 символов, пока не дойдем до конца файла в этом случае метод read возвратит число -1.

    Читайте также:  Json set encoding python

    Поскольку считанная порция файла может быть меньше 256 символов (например, в файле всего 73 символа), и если количество считанных данных меньше размера буфера (256), то выполняем копирование массива с помощью метода Arrays.copy. То есть фактически обрезаем массив buf, оставляя в нем только те символы, которые считаны из файла.

    Источник

    Считывание строки из файла до точки

    Считывание из файла последней строки
    Есть файл в нем хранится записи: 72 23.03.2015 10:37:28 7348537A889PB1 72 23.03.2015.

    Считывание координат точки с файла
    в текстовом файле POINTS.DAT содержатся координаты ста точек на плоскости (одна строчка.

    Считывание символов из текстового файла до первой точки
    нужна прога, с интерфейсом, которая считает количество символов не открытом тексте до точки вроде.

    Считывание строки из файла до символа переноса строки
    К примеру у меня есть текстовый файл, который содержит в себе несколько строчек символов. Мне надо.

    private void read(String fileName) throws IOException  ch == '?'  System.out.println(sb.toString()); }

    ЦитатаСообщение от YuraAAA Посмотреть сообщение

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
    import java.io.*; public class Readfile { public void readFile(){ int line; try(BufferedReader br = new BufferedReader(new FileReader("filename.txt"))) { while((line = br.read()) != -1){ if(line == '.'){ System.out.print('.'); System.out.println(""); }else if(line == '!'){ System.out.print('!'); System.out.println(""); }else if(line == '?'){ System.out.print('?'); System.out.println(""); }else { System.out.print((char)line); } } } catch (FileNotFoundException e) { System.err.println("При чтении файла: " + e.getMessage()); } catch (IOException e) { System.err.println("При чтении файла: " + e.getMessage()); } } }
    public static void main(String. args){ Readfile rf = new Readfile(); rf.readFile(); }

    Считывание Определенной Строки Из Файла По Номеру Строки?
    Считывание Определенной Строки Из Файла По Номеру Строки? // В БД Слов содержиться в текстовом.

    Считывание строки из файла.
    Появилась проблема. Строка из файла считывается, но не реагирует на пробелы. И не находит конец.

    Считывание строки с файла
    Подскажите как сделать так чтобы с файла считывало не одну строку а все! #include "stdafx.h".

    Считывание строки из файла
    Появилась жесткая потребность написать кусок кода на Java. Сам пишу на С++, с Java дел не имел.

    Источник

    Оцените статью