Java читает все форматы

Содержание
  1. 5 Способов чтения файла в Java – BufferedReader, FileInputStream, Файлы, Сканер, Случайный файл
  2. Различные способы чтения файла на Java
  3. Чтение двоичных файлов и текстовых файлов
  4. 1. BufferedReader Читает файл
  5. 2. FileInputStream – Считывание двоичных файлов в байты
  6. 3. Файлы – Чтение файла в список строк
  7. 4. Сканер – Считывает текстовый файл в качестве итератора
  8. 5. RandomAccessFile – Чтение файлов в режиме только для чтения
  9. Читайте ещё по теме:
  10. Java читает все форматы
  11. Запись файлов. Класс FileWriter
  12. Чтение файлов. Класс FileReader
  13. Rukovodstvo
  14. статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
  15. Чтение и запись CSV на Java
  16. Введение Это первая статья из короткой серии, посвященной библиотекам для чтения и записи CSV на Java [/ библиотеки-для-чтения-и-записи-csvs-in-java]. Чтение и запись CSV в Core Java Благодаря популярности и широкому использованию CSV в качестве формата для передачи данных существует множество библиотек синтаксического анализатора, которые можно использовать вместе с Java. Сторонние парсеры определяют общие форматы и могут работать с различными разделителями, обрабатывать специальные символы, а иногда даже читать не-b
  17. Вступление
  18. Чтение и запись CSV в Core Java
  19. Написание CSV на Core Java
  20. Заключение

5 Способов чтения файла в Java – BufferedReader, FileInputStream, Файлы, Сканер, Случайный файл

Как прочитать файл на Java? Мы можем использовать классы ввода-вывода Java для чтения текстовых и двоичных файлов, таких как изображения, pdf и т.д., Используя BufferedReader, FileInputStream.

Существует множество различных способов чтения файла на Java. В этом уроке мы рассмотрим 5 различных способов чтения файла на Java.

Различные способы чтения файла на Java

5 классов из API ввода-вывода Java для чтения файлов:

  1. Буферизатор
  2. Поток ввода файлов
  3. Файлы
  4. Сканер
  5. Случайный файл
Читайте также:  Параметры функции range python

Чтение двоичных файлов и текстовых файлов

  • Класс FileInputStream считывает данные файла в поток байтов. Поэтому его следует использовать для двоичных файлов, таких как изображения, pdf, мультимедиа, видео и т.д.
  • Текстовые файлы основаны на символах. Мы можем использовать классы Reader , а также потоковые классы для их чтения.
  • Файлы и классы сканера можно использовать для чтения текстовых файлов, а не двоичных файлов.

Давайте рассмотрим примеры программ для чтения файла на Java.

1. BufferedReader Читает файл

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

BufferedReader эффективен для чтения файла, поскольку он буферизует входные данные из указанного файла. Без буферизации каждый вызов методов read() или readLine() будет считывать байты из файла, затем преобразовываться в символы и возвращаться, что будет очень неэффективно.

package com.journaldev.io.readfile; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReadFileUsingBufferedReader < public static void main(String[] args) < BufferedReader reader; char[] buffer = new char[10]; try < reader = new BufferedReader(new FileReader( "/Users/pankaj/Downloads/myfile.txt")); while (reader.read(buffer) != -1) < System.out.print(new String(buffer)); buffer = new char[10]; >reader.close(); > catch (IOException e) < e.printStackTrace(); >> >

В приведенной выше программе я печатаю данные файла на консоль. Давайте рассмотрим другой класс утилит для выполнения операций чтения файлов.

  1. Прочитайте полный файл в виде строки
  2. Считывайте файл строка за строкой и возвращайте список строк
  3. Подсчитайте вхождение строки в данный файл.
package com.journaldev.java; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ReadFileJavaExample < /** * Main function to invoke different functions to * 1. readCompleteFileAsString - Read complete file as String * 2. readFileToListOfLines - Read lines from file and return list of line String * 3. countStringInFile - Count occurrence of a String in the file * @param args */ public static void main(String[] args) < String filePath = "/Users/pankaj/Downloads/myfile.txt"; String str="Java"; String fileData = readCompleteFileAsString(filePath); System.out.println("Complete File Data:"+fileData); ListlinesData = readFileToListOfLines(filePath); if(linesData!=null)< for(int i=0; i=""> readFileToListOfLines(String filePath) < ListlinesData = new ArrayList(); BufferedReader reader; try < reader = new BufferedReader( new FileReader(filePath)); >catch (FileNotFoundException e) < System.out.println("File is not present in the classpath or given location."); return null; >String line; try < while ((line=reader.readLine()) != null) < linesData.add(line); >> catch (IOException e) < System.out.println("IOException in reading data from file."); return null; >try < reader.close(); >catch (IOException e) < System.out.println("IOException in closing the Buffered Reader."); return null; >return linesData; > /** * This function will read complete file and return it as String * @param filePath * @return */ private static String readCompleteFileAsString(String filePath) < StringBuilder fileData = new StringBuilder(); BufferedReader reader; try < reader = new BufferedReader( new FileReader(filePath)); >catch (FileNotFoundException e) < System.out.println("File is not present in the classpath or given location."); return null; >char[] buf = new char[1024]; int numRead=0; try < while((numRead=reader.read(buf)) != -1)< String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; >> catch (IOException e) < System.out.println("IOException in reading data from file."); return null; >try < reader.close(); >catch (IOException e) < System.out.println("IOException in closing the Buffered Reader."); return null; >return fileData.toString(); > > 

2. FileInputStream – Считывание двоичных файлов в байты

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

package com.journaldev.io.readfile; import java.io.FileInputStream; import java.io.IOException; public class ReadFileUsingFileInputStream < public static void main(String[] args) < FileInputStream fis; byte[] buffer = new byte[10]; try < fis = new FileInputStream("/Users/pankaj/Downloads/myfile.txt"); while (fis.read(buffer) != -1) < System.out.print(new String(buffer)); buffer = new byte[10]; >fis.close(); > catch (IOException e) < e.printStackTrace(); >> >

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

3. Файлы – Чтение файла в список строк

Файлы – это служебный класс, который был представлен в версии Java 1.7. Мы можем использовать его метод ReadAllLines() для чтения данных текстового файла в виде списка строк.

package com.journaldev.io.readfile; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; public class ReadFileUsingFiles < public static void main(String[] args) < try < ListallLines = Files.readAllLines(Paths.get("/Users/pankaj/Downloads/myfile.txt")); for (String line : allLines) < System.out.println(line); >> catch (IOException e) < e.printStackTrace(); >> > 

4. Сканер – Считывает текстовый файл в качестве итератора

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

package com.journaldev.io.readfile; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadFileUsingScanner < public static void main(String[] args) < try < Scanner scanner = new Scanner(new File("/Users/pankaj/Downloads/myfile.txt")); while (scanner.hasNextLine()) < System.out.println(scanner.nextLine()); >scanner.close(); > catch (FileNotFoundException e) < e.printStackTrace(); >> >

5. RandomAccessFile – Чтение файлов в режиме только для чтения

Класс RandomAccessFile позволяет нам читать файл в разных режимах. Это хороший вариант, если вы хотите убедиться, что в файле не выполняется случайная операция записи.

package com.journaldev.io.readfile; import java.io.IOException; import java.io.RandomAccessFile; public class ReadFileUsingRandomAccessFile < public static void main(String[] args) < try < RandomAccessFile file = new RandomAccessFile("/Users/pankaj/Downloads/myfile.txt", "r"); String str; while ((str = file.readLine()) != null) < System.out.println(str); >file.close(); > catch (IOException e) < e.printStackTrace(); >> >

Это все для чтения файла на Java с использованием различных классов из Java IO API.

Читайте ещё по теме:

Источник

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.

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

Источник

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Чтение и запись CSV на Java

Введение Это первая статья из короткой серии, посвященной библиотекам для чтения и записи CSV на Java [/ библиотеки-для-чтения-и-записи-csvs-in-java]. Чтение и запись CSV в Core Java Благодаря популярности и широкому использованию CSV в качестве формата для передачи данных существует множество библиотек синтаксического анализатора, которые можно использовать вместе с Java. Сторонние парсеры определяют общие форматы и могут работать с различными разделителями, обрабатывать специальные символы, а иногда даже читать не-b

Вступление

Это первая статья из короткой серии, посвященной библиотекам для чтения и записи CSV на Java .

Чтение и запись CSV в Core Java

Благодаря популярности и широкому распространению CSV в качестве формата для передачи данных существует множество библиотек синтаксического анализатора, которые можно использовать вместе с Java.

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

Простая комбинация FileReader , BufferedReader и String.split() может облегчить чтение данных из CSV. Давайте рассмотрим шаги, чтобы открыть базовый файл CSV и проанализировать содержащиеся в нем данные:

  • Используйте FileReader чтобы открыть файл CSV
  • Создайте BufferedReader и прочитайте файл построчно, пока не будет достигнут символ «Конец файла» ( EOF).
  • Используйте метод String.split() чтобы определить разделитель запятой и разделить строку на поля.
 BufferedReader csvReader = new BufferedReader(new FileReader(pathToCsv)); while ((row = csvReader.readLine()) != null) < String[] data = row.split(","); // do something with the data >csvReader.close(); 

data будет содержать список полей в каждой строке файла, найденного в расположении файла pathToCsv Если в CSV-файле есть разделитель, отличный от запятой, его можно указать в методе split Например, еще одним распространенным разделителем является вкладка для файлов TSV (Tab-Separated-Value).

Данные могут быть переданы в отдельный метод для обработки или записи в базу данных из цикла или сохранены в коллекции Java для дальнейшего использования. Например, если вы записываете большой объем данных в базу данных, нарушений ограничений (например, нарушений первичного ключа), вызванных человеческими ошибками при создании CSV, можно избежать с помощью хэш-карты. Если в CSV есть повторяющаяся запись, хэш-карта сохранит самое последнее «прочитанное» и перезапишет предыдущую запись.

Поскольку вы пишете синтаксический анализатор с нуля, вам необходимо самостоятельно позаботиться о простой обработке ошибок. Например, если вы не уверены, существует ли файл, всегда безопаснее заключить операцию чтения в блок try/catch или добавить логику для определения существования файла перед обработкой.

Чтобы проверить, существует ли файл, в наш код можно внести следующие изменения:

 File csvFile = new File(pathToCsv); if (csvFile.isFile()) < // create BufferedReader and read data from csv >

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

Написание CSV на Core Java

Большинство сторонних парсеров также поддерживают запись в файлы CSV. Однако есть простой способ записи в файлы CSV, как и в файлы любого другого типа, без использования каких-либо библиотек.

Самый простой способ — использовать FileWriter и обрабатывать файл CSV как любой другой текстовый файл. В нашем примере данные хранятся в некоторых List , которые мы просто перебираем и добавляем в средство записи:

 // Our example data List> rows = Arrays.asList( Arrays.asList("Jean", "author", "Java"), Arrays.asList("David", "editor", "Python"), Arrays.asList("Scott", "editor", "Node.js") ); FileWriter csvWriter = new FileWriter("new.csv"); csvWriter.append("Name"); csvWriter.append(","); csvWriter.append("Role"); csvWriter.append(","); csvWriter.append("Topic"); csvWriter.append("\n"); for (List rowData : rows) < csvWriter.append(String.join(",", rowData)); csvWriter.append("\n"); >csvWriter.flush(); csvWriter.close(); 

При использовании FileWriter всегда убеждайтесь, что вы сбрасываете и закрываете поток. Это улучшает производительность операции ввода-вывода и указывает на то, что в выходной поток больше нет данных для записи.

Заключение

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

Если вам интересно узнать о других способах чтения и записи CSV на Java, обязательно ознакомьтесь с другими нашими статьями:

Licensed under CC BY-NC-SA 4.0

Источник

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