Нужно понимать, по каким принципам происходит чтение и запись в файл Java, несмотря на то, что вы программируете на этом языке: веб-программу или приложение для мобильного телефона. Записываемая или считываемая информация может быть разной: кэш, изображения, текст, числа, двоичный формат и др.
Для разных вариаций записывания и прочтения в Джава сосредоточены разношерстные виды инструментария: методы, функции, классы, производные классы и др. Например, вот такой набор классового инструментария:
-
FileReader;
-
FileWriter;
-
BufferedReader;
-
BufferedWriter;
-
FileInputStream;
-
FileOutputStream;
-
и др.
Вся записываемая и считываемая информация делится на 2 типа поточной последовательности информации, с которыми происходит разное взаимодействие:
-
Поток последовательности символов.
-
Поток последовательности байтов.
Для каждого отдельного вида поточной последовательности применяются разные вариации инструментов. Вообще, слово «поток» довольно избитое в программировании и используется в разных смыслах. В этом конкретном случае оно не имеет ничего общего с программным потоком, происходящим в процессорах устройств.
Чтение и запись в файл Java потока символов
Внутри поточной символьной последовательности может располагаться любое сочетание букв, чисел и специальных текстов. То есть такой последовательностью может быть:
-
какой-либо текст,
-
числа,
-
криптографический ключ,
-
программный скрипт,
-
и др.
Для прочтения символьных данных из документа Java внутри языка предусмотрены следующие классы:
-
«Reader». Представляет собой абстрактный классовый инструментарий для прочтения информации, состоящей из символьной последовательности.
-
«InputStreamReader». Представляет собой классовый инструментарий, который «читает» байтовую последовательность, но потом преобразует ее в символьную последовательность.
-
«FileReader». Деривационный инструментарий класса «Reader», который применяется при считывании символьной последовательности данных из файла Java.
-
«BufferedReader». Это специальная буферная оболочка для классового инструмента «Reader». Эта оболочка позволяет за один раз считывать большой объем информации, что позволяет уменьшить количество общих итераций чтения-записи из файловой системы.
Для записывания символьной последовательности в документы Java внутри языка предусмотрены следующие классы:
-
«Writer». Представляет собой обобщенный классовый инструментарий для внедрения символьной последовательности в документы Джава.
-
«OutputStreamWriter». Представляет собой инструмент, который используется с целью записать символьную информацию в документ Джава, а также преобразовывать ее в байтосодержащую последовательность, если в этом есть необходимость.
-
«FileWriter». Деривационный инструмент класса «Writer», который применяется для записывания данных в файл Java.
-
«BufferedWriter». Это специальная буферная оболочка для класса «Writer». Дает возможность за один раз записать большой объем информации, что позволяет уменьшить количество общих итераций чтения-записи из документов.
Чтение и запись в файл Java потока байтов
Байтовые потоки применяются, чтобы осуществить чтение и запись в файл Java байтовой информации. Сам процесс записывания и чтения байтовой последовательности будет различаться с записыванием и прочтением символьной последовательности. Байтовый поток — это необработанная информация, которая может представляться:
-
символьной последовательностью,
-
графическим изображением,
-
кодированной информацией,
-
и др.
При прочтении байтосодержащих данных из файла Java применяются следующие инструменты:
-
«InputStream». Представляет собой абстрактный классовый инструмент, который применяется для прочтения байтовой последовательности.
-
«FileInputStream». Деривационный класс, который осуществляет простое считывание байтовых данных из файла Java.
-
«BufferedInputStream». Это специализированная буферная оболочка класса «InputStream», которая позволяет считывать большое количество байтовой информационной последовательности.
Для записывания байтовых данных в файл Java применяются следующие классы:
-
«OutputStream». Представляет собой абстрактный классовый инструментарий, который применяется для записывания байтовой последовательности в документ Джава.
-
«FileOutputStream». Представляет собой деривационный инструмент, который осуществляет простую запись байтосодержащих данных в файл Java.
-
«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». Внутри набора располагается намного большее количество инструментов для прочтения и записи в файл Джава, чем мы сегодня презентовали. В нашей статье мы показали основные из них, которые наиболее часто используются программистами.