Java чтение файла до пробела

Java — чтение из файла

В этом руководстве мы рассмотрим различные способыread from a File in Java; мы будем использоватьBufferedReader,Scanner,StreamTokenizer,DataInputStream,SequenceInputStream иFileChannel.

Затем мы обсудим, как прочитать файл в кодировке UTF-8 и как создать строку из содержимого файла.

Наконец, мы рассмотрим новые методы чтения из файла в Java 7.

Эта статья является частьюthe “Java – Back to Basic” series здесь для примера.

2. Читать сBufferedReader

Начнем с простого способа чтения из файла с помощьюBufferedReader; сам файл содержит:

Следующий код читает из файла с использованиемBufferedReader:

@Test public void whenReadWithBufferedReader_thenCorrect() throws IOException < String expected_value = "Hello world"; String file ="src/test/resources/test_read.txt"; BufferedReader reader = new BufferedReader(new FileReader(file)); String currentLine = reader.readLine(); reader.close(); assertEquals(expected_value, currentLine); >

Обратите внимание, чтоreadLine() вернетnull, когда будет достигнут конец файла.

3. Читать сScanner

Затем давайте воспользуемсяScanner для чтения из файла — файл содержит:

В качестве разделителя мы будем использовать простой пробел:

@Test public void whenReadWithScanner_thenCorrect() throws IOException < String file = "src/test/resources/test_read.txt"; Scanner scanner = new Scanner(new File(file)); scanner.useDelimiter(" "); assertTrue(scanner.hasNext()); assertEquals("Hello", scanner.next()); assertEquals("world", scanner.next()); assertEquals(1, scanner.nextInt()); scanner.close(); >

Обратите внимание, что разделителем по умолчанию является пробел, но можно использовать несколько разделителей сScanner.

4. Читать сStreamTokenizer

Затем давайте прочитаем текстовый файл в токены, используяStreamTokenizer.

Токенизатор работает следующим образом: сначала нам нужно выяснить, какой будет следующий токен — строка или число; мы делаем это, глядя на полеtokenizer.ttype.

Затем мы прочитаем фактический токен на основе этого типа:

Следующий код читает из файла и строку, и число:

@Test public void whenReadWithStreamTokenizer_thenCorrectTokens() throws IOException < String file = "src/test/resources/test_read.txt"; FileReader reader = new FileReader(file); StreamTokenizer tokenizer = new StreamTokenizer(reader); // token 1 tokenizer.nextToken(); assertEquals(StreamTokenizer.TT_WORD, tokenizer.ttype); assertEquals("Hello", tokenizer.sval); // token 2 tokenizer.nextToken(); assertEquals(StreamTokenizer.TT_NUMBER, tokenizer.ttype); assertEquals(1, tokenizer.nval, 0.0000001); // token 3 tokenizer.nextToken(); assertEquals(StreamTokenizer.TT_EOF, tokenizer.ttype); reader.close(); >

Обратите внимание, как маркер конца файла используется в конце.

5. Читать сDataInputStream

Мы можем использоватьDataInputStream для чтения двоичного или примитивного типа данных из файла.

Следующий тест читает файл с использованиемDataInputStream:

@Test public void whenReadWithDataInputStream_thenCorrect() throws IOException < String expectedValue = "Hello"; String file ="src/test/resources/test_read.txt"; DataInputStream reader = new DataInputStream(new FileInputStream(file)); String result = reader.readUTF(); reader.close(); assertEquals(expectedValue, result); >

6. Читать сFileChannel

Если мы читаем большой файл,FileChannel может быть быстрее, чем стандартный ввод-вывод.

Следующий код считывает байты данных из файла, используяFileChannel иRandomAccessFile:

@Test public void whenReadWithFileChannel_thenCorrect() throws IOException < String expected_value = "Hello world"; String file = "src/test/resources/test_read.txt"; RandomAccessFile reader = new RandomAccessFile(file, "r"); FileChannel channel = reader.getChannel(); int bufferSize = 1024; if (bufferSize >channel.size()) < bufferSize = (int) channel.size(); >ByteBuffer buff = ByteBuffer.allocate(bufferSize); channel.read(buff); buff.flip(); assertEquals(expected_value, new String(buff.array())); channel.close(); reader.close(); >

7. Прочитать файл в кодировке UTF-8

Теперь давайте посмотрим, как читать файл в кодировке UTF-8, используяBufferedReader:

@Test public void whenReadUTFEncodedFile_thenCorrect() throws IOException < String expected_value = "青空"; String file = "src/test/resources/test_read.txt"; BufferedReader reader = new BufferedReader (new InputStreamReader(new FileInputStream(file), "UTF-8")); String currentLine = reader.readLine(); reader.close(); assertEquals(expected_value, currentLine); >

8. Прочитать файл в строку

Мы можем эффективно использовать отStringBuilder доread the entire contents of a file into a String. Начнем с файла:

Следующий код добавляет данные, считанные из файла, вStringBuilder построчно:

@Test public void whenReadFileContentsIntoString_thenCorrect() throws IOException < String expected_value = "Hello world n Test line n"; String file = "src/test/resources/test_read.txt"; BufferedReader reader = new BufferedReader(new FileReader(file)); StringBuilder builder = new StringBuilder(); String currentLine = reader.readLine(); while (currentLine != null) < builder.append(currentLine); builder.append("n"); currentLine = reader.readLine(); >reader.close(); assertEquals(expected_value, builder.toString()); >

9. Чтение из файла с помощью Java 7

Java 7 представляет новый способ работы с файлами и файловой системой — давайте воспользуемся им для чтения файлов.

9.1. Прочтите небольшой файл с помощью Java 7

Следующий код показывает, как читать небольшой файл с помощью нового классаFiles:

@Test public void whenReadSmallFileJava7_thenCorrect() throws IOException < String expected_value = "Hello world"; Path path = Paths.get("src/test/resources/test_read.txt"); String read = Files.readAllLines(path).get(0); assertEquals(expected_value, read); >

Обратите внимание, что вы также можете использовать методreadAllBytes(), если вам нужны двоичные данные.

9.2. Прочтите большой файл с помощью Java 7

Если мы хотим прочитать большой файл с классомFiles, мы можем использоватьBufferedReader.

Следующий код читает файл, используя новый классFiles иBufferedReader:

@Test public void whenReadLargeFileJava7_thenCorrect() throws IOException < String expected_value = "Hello world"; Path path = Paths.get("src/test/resources/test_read.txt"); BufferedReader reader = Files.newBufferedReader(path); String line = reader.readLine(); assertEquals(expected_value, line); >

10. Заключение

Как видите, существует много возможностей для чтения данных из файла с использованием простой Java. Вы можете выбратьBufferedReader для чтения построчно,Scanner для чтения с использованием разных разделителей,StreamTokenizer для чтения файла в токены,DataInputStream для чтения двоичных данных и примитивных данных типы,SequenceInput Stream для связывания нескольких файлов в один поток,FileChannel для более быстрого чтения из больших файлов и т. д.

Источник

Файл: Читать файл по «словам»

Подскажите как переделать код, чтобы файл читался по «словам» т.е. прочитав первую строку переменной String n присвоить значение «АААА»,а переменной int i присвоить значение 111.

Читать файл, с последующим выводом на экран
Есть текстовый файл, содержимое которого выглядит следующим образом: Noah 18090 Liam .

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
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class ReadText { public static void main(String[] args) throws IOException { InputStream in= new FileInputStream("aaa.txt"); int c; String s = ""; while((in.available())!=1){ c = in.read(); if((int)c!=32){ s = s + (char)c; } else { System.out.println(s); s = ""; } } in.close(); } }

На экран выводит
AAAA
111
BBBB
222
CCCC

Но всеравно, каждая последовательность знаков воспринимается как String. Далее осталось сделать так, чтобы числа записывались в переменную int?Буду думать

Источник

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

Считывание из файла последней строки
Есть файл в нем хранится записи: 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 дел не имел.

Источник

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

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

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

Программа ниже покажет это на примере.

Вот такой простой и эффективный способ построчного считывания файла.

Следите за остальными статьями из раздела «Операции ввода-вывода«.

Больше полезных статей!

5 thoughts to “Как построчно считывать файл в Java?”

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

Давайте рассмотрим ситуацию, где каждый урл в файле находится на отдельной строке. В этом случае Вам нужно вначале метода создать список, например, List listOfUrls = new ArrayList<>(); и затем в приведенном выше коде заменить код line = reader.readLine(); на listOfUrls.add(reader.readLine()) . Далее просто передаете полученный список ссылок в качестве параметра в свой метод. Удачи!

Где закрытие ресурсов-то? Путь хардкодить в том же методе — очень плохо. Лучше уже вынести если не в отдельный класс, то хоть в отдельный метод, принимающий путь

А как сделать так, чтобы каждая строка становилась переменной, например первая строка была переменной String name, вторая int age и так далее

Источник

Читайте также:  Информация о плагине css
Оцените статью