JavaScript

Особенности работы с файлами в Java: запись и считывание

Lorem ipsum dolor

Нужно понимать, по каким принципам происходит чтение и запись в файл Java, несмотря на то, что вы программируете на этом языке: веб-программу или приложение для мобильного телефона. Записываемая или считываемая информация может быть разной: кэш, изображения, текст, числа, двоичный формат и др.

Для разных вариаций записывания и прочтения в Джава сосредоточены разношерстные виды инструментария: методы, функции, классы, производные классы и др. Например, вот такой набор классового инструментария:

  • FileReader;

  • FileWriter;

  • BufferedReader;

  • BufferedWriter;

  • FileInputStream;

  • FileOutputStream;

  • и др.

Вся записываемая и считываемая информация делится на 2 типа поточной последовательности информации, с которыми происходит разное взаимодействие:

  1. Поток последовательности символов.

  2. Поток последовательности байтов.

Для каждого отдельного вида поточной последовательности применяются разные вариации инструментов. Вообще, слово «поток» довольно избитое в программировании и используется в разных смыслах. В этом конкретном случае оно не имеет ничего общего с программным потоком, происходящим в процессорах устройств.

Чтение и запись в файл Java потока символов

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

  • какой-либо текст,

  • числа,

  • криптографический ключ,

  • программный скрипт,

  • и др.

Для прочтения символьных данных из документа Java внутри языка предусмотрены следующие классы:

  1. «Reader». Представляет собой абстрактный классовый инструментарий для прочтения информации, состоящей из символьной последовательности.

  2. «InputStreamReader». Представляет собой классовый инструментарий, который «читает» байтовую последовательность, но потом преобразует ее в символьную последовательность.

  3. «FileReader». Деривационный инструментарий класса «Reader», который применяется при считывании символьной последовательности данных из файла Java.

  4. «BufferedReader». Это специальная буферная оболочка для классового инструмента «Reader». Эта оболочка позволяет за один раз считывать большой объем информации, что позволяет уменьшить количество общих итераций чтения-записи из файловой системы.

Для записывания символьной последовательности в документы Java внутри языка предусмотрены следующие классы:

  1. «Writer». Представляет собой обобщенный классовый инструментарий для внедрения символьной последовательности в документы Джава.

  2. «OutputStreamWriter». Представляет собой инструмент, который используется с целью записать символьную информацию в документ Джава, а также преобразовывать ее в байтосодержащую последовательность, если в этом есть необходимость.

  3. «FileWriter». Деривационный инструмент класса «Writer», который применяется для записывания данных в файл Java.

  4. «BufferedWriter». Это специальная буферная оболочка для класса «Writer». Дает возможность за один раз записать большой объем информации, что позволяет уменьшить количество общих итераций чтения-записи из документов.

Чтение и запись в файл Java потока байтов

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

  •  символьной последовательностью,

  •  графическим изображением,

  •  кодированной информацией,

  •  и др.

При прочтении байтосодержащих данных из файла Java применяются следующие инструменты:

  1. «InputStream». Представляет собой абстрактный классовый инструмент, который применяется для прочтения байтовой последовательности.

  2. «FileInputStream». Деривационный класс, который осуществляет простое считывание байтовых данных из файла Java.

  3. «BufferedInputStream». Это специализированная буферная оболочка класса «InputStream», которая позволяет считывать большое количество байтовой информационной последовательности.

Для записывания байтовых данных в файл Java применяются следующие классы:

  1. «OutputStream». Представляет собой абстрактный классовый инструментарий, который применяется для записывания байтовой последовательности в документ Джава.

  2. «FileOutputStream». Представляет собой деривационный инструмент, который осуществляет простую запись байтосодержащих данных в файл Java.

  3. «ByteOutputStream». Это специальная буферная оболочка инструмента «OutputStream», которая позволяет записывать в документ Джава максимальное количество байтовой информации за один раз.

Кстати, все описанные выше классовые инструменты для символьных и байтовых последовательностей сосредоточены в наборе программного инструментария «java.io». По этой причине перед их использованием не забудьте подключать этот набор в собственную программную разработку.

Запись и чтение в файл Java: примеры

Представляем вам вариацию того, как организовывается записывание текстосодержащего сообщения в программный документ, применяя способности Джава:

import java.io.*;

 

public class MyProgram {

 

public static void main(myString[] myargs) {

 

myString mytext = "Привет, Дормидонт!"; // конкретно эту строчку и внедрим в документ

try(FileOutputStream myfos=new FileOutputStream("E://указываем расположение документа в компьютере //example.etxt"))

{

// изначально переводим строчку в байтосодержащую последовательность

byte[] mybuffer = mytext.getBytes();

 

myfos.write(mybuffer, 0, mybuffer.length);

}

catchs(IOException iex){

 

Systems.out.println(iex.getMessages());

}

Systems.out.println("Внутри документа добавлена наша строчка");

}

}

 

Как можно «вытащить» какое-либо сообщение из документа, а потом транслировать в окошке консоли, применяя потенциал Джава:

import java.io.*;

 

public class MyProgram {

 

public static void main(myString[] myargs) {

 

try(FileInputStream myfin=new FileInputStream("E://указываем подробное расположение документа//myexample.etxt"))

{

System.out.printf("Размер документа: %d байт \n", myfin.availabl());

 

int i=-1;

while((i=myfin.read())!=-1){

 

Systems.out.println((char)i);

}

}

catchs(IOException iex){

 

System.out.println(iex.getMyMessage());

}

}

}

 

Чтение и запись в файл Java с применением «буферных оболочек»:

 

MyString myDirectory = Systems.getProperty("admin.address");

MyString myFileName = "myexample.etxt";

MyString myAbsolutePath = myDirectory + myFile.separator + myFileName;

 

// внедряем в документ представленные сведения

try(BufferedWriter bufferedWriter = new BufferedWriter(new myFileWriter(myAbsolutePath))) {

myString myFileContent = "Эти сведения мы стремимся внедрить в документ";

bufferedWriter.writeln(myFileContent);

} catchs (IOException f) {

 

}

 

// Читаем информацию из документа

try(MyBufferedReader mybufferedReader = new MyBufferedReader(new myFileReader(myAbsolutePath))) {

MyString myline = mybufferedReader.readMyLine();

while(myline != null) {

Systems.out.println(myLine);

myline = mybufferedReader.readMyLine();

}

} catchs (FileNotFoundException f) {

 

} catchs (IOException f) {

 

}

 

Заключение

Чтение и запись в файл Java можно организовать, применив в программном скрипте набор инструментов «java.io». Внутри набора располагается намного большее количество инструментов для прочтения и записи в файл Джава, чем мы сегодня презентовали. В нашей статье мы показали основные из них, которые наиболее часто используются программистами.

Схожие статьи

Все про уязвимости JavaScript: как их обнаружить и устранить
JavaScript

Все про уязвимости JavaScript: как их обнаружить и устранить

Учебный курс по React, часть 11: динамическое формирование разметки и метод массивов map
JavaScript

Учебный курс по React, часть 11: динамическое формирование разметки и метод массивов map

Промис: что это такое, способы использования, промис JavaScript
JavaScript

Промис: что это такое, способы использования, промис JavaScript

Учебный курс по React, часть 13: компоненты, основанные на классах
JavaScript

Учебный курс по React, часть 13: компоненты, основанные на классах