Урок 3. Работа с файлами используя FileInputStream и FileOutputStream – Devcolibri

Урок 3. Работа с файлами используя FileInputStream и FileOutputStream

В этом уроке будет продемонстрирована работа с FileInputStream и FileOutputStream потоками, где мы рассмотрим как записать данные в файл и как их оттуда прочитать.

Шаг 1

Создаем простой Java проект и создаем файл FileInputOutputStream.java со следующим содержимым:

package examples;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputOutputStream {

    // Класс для работы потоком вывода из файла
    private FileInputStream inputStream;

    // Класс для работы потоком ввода в файл
    private FileOutputStream outputStream;

    // полный путь к файлу
    private String path;

    public FileInputOutputStream(String path) {
        this.path = path;
    }

    public void read() throws IOException {
        // инициализируем поток вывода из файлу
        inputStream = new FileInputStream(path);

        // читаем первый символ с потока байтов
        int data = inputStream.read();
        char content;

        // если data будет равна 0 то это значит,
        // что файл пуст
        while(data != -1) {
            // переводим байты в символ
            content = (char) data;

            // выводим полученный символ
            System.out.print(content);

            // читаем следующий байты символа
            data = inputStream.read();
        }

        // закрываем поток чтения файла
        inputStream.close();
    }

    public void write(String st) throws IOException {
        // открываем поток ввода в файл
        outputStream = new FileOutputStream(path);

        // записываем данные в файл, но 
        // пока еще данные не попадут в файл,
        // а просто будут в памяти
        outputStream.write(st.getBytes());

        // только после закрытия потока записи, 
        // данные попадают в файл
        outputStream.close();
    }

}

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

Шаг 2

Запускаем и смотрим результат в консоли:

Hello DevColibri!

а потом проверяем файл и видим что текст записался.

ПОХОЖИЕ ПУБЛИКАЦИИ

    None Found

56322
12/09/2013

9 комментариев к статье "Урок 3. Работа с файлами используя FileInputStream и FileOutputStream"

  1. Если вы не используете FileInputStream/FileOutputStream нигде кроме как в функциях read/write. То почему бы их экземпляры не объявить локально там где они будут используются?

  2. а что если в ходе будет выброшено исключение и поток не будет закрыт?

  3. outputStream.write(st.getBytes());
    При работе с байтами лучше указывать кодировку, что бы потом не было сюрпризов.
    outputStream.write(st.getBytes(“UTF-8”));

  4. “если data будет равна 0 то это значит, что файл пуст”
    тогда, возможно, правильней будет “while(data > 0)”, а то зациклит при пустом файле…

  5. да и можно немного рассказать в чем же разница между FileInputStream и InputStream, а то по примерам действительно непонятно

Добавить комментарий

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

Я ознакомлен(а)