Потоки ввода/вывода в Java
В Java - потоки - это базовая концепция, так как работа будь то с диском, сетью или даже памятью строится на работе с потоком байт, которые циркулируют то туда, то сюда. И сегодня я хотел бы поговорить с Вами о потоках ввода/вывода, а именно о потоках FileInputStream и FileOutputStream. С помощью этих классов мы далее будем читать и записывать файл.
Итак, начнем. Класс, FileOutputStream является одной из реализаций абстрактного класса OutputStream.
В конструкторе объекты этого класса принимают либо путь к конечному файлу, либо объект класса File.
Рассмотрим оба примера:
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("home/test.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
String greetings = "Привет! MyRusakov.Ru";
fileOutputStream.write(greetings.getBytes());
fileOutputStream.close();
}
}
Можно и так:
public class Main {
public static void main(String[] args) throws IOException {
FileOutputStream fileOutputStream = new FileOutputStream("home/test.txt");
String greetings = "Привет! MyRusakov.Ru";
fileOutputStream.write(greetings.getBytes());
fileOutputStream.close();
}
}
Результат в обоих случаях будет одинаковым. Мы можем открыть наш файл и увидеть там содержимое.
Однако, если несколько раз подряд вызывать программу, а потом заглянуть в файл, то там будет всего лишь одна строка. Всего одна. Но ведь Вы запускали код несколько раз. Однако при этом данные, всякий раз перезаписывались, заменяя старые.
Что делать, если нас это не устраивает, и требуется последовательная запись? Что если мы хотим записать наше приветствие в файл три раза подряд?
Здесь все просто - в конструктор FileOutputStream можно передать логический дополнительный параметр — boolean append.
Если его значение true, данные будут дозаписаны в конец файла. Если false, старые данные будут стерты, а новые записаны.
А вот как будет выглядеть чтение файла с помощью класса FileInputStream
public class Main {
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream("home/test.txt");
int i;
// читаем посимвольно и выводим в консоль
while((i=fileInputStream.read())!= -1){
System.out.print((char)i);
}
}
}
Таким образом, чтение и запись файлов в Java выполняется с помощью классов ввода/вывода FileInputStream/FileOutputStream.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.