JavaのI/Oストリーム

I/Oストリームの概念

I/Oストリームとは、データを入力と出力を行うための手段です。

Fileクラス

Fileクラスは、ファイルやディレクトリのパス名を抽象的に表現します。

Fileクラスの主なメソッド

  • file.mkdir(): ディレクトリを作成します。
  • file.mkdirs(): 複数のディレクトリを作成します。

バイトストリームと文字ストリーム

バイト入力ストリーム: InputStream

バイト出力ストリーム: OutputStream

package IO.textstream;

import java.io.*;

public class StreamExample {
    public static void main(String[] args) {
        InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
            inputStream = new FileInputStream("D:\\abc.txt");
            outputStream = new FileOutputStream("D:\\a.txt");

            byte[] bytes = new byte[inputStream.available()];
            inputStream.read(bytes);

            for (int i = 0; i < bytes.length; i++) {
                System.out.println(bytes[i]);
            }

            outputStream.write(bytes);
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            try {
                if (outputStream != null) {
                    outputStream.close();
                }
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

バッファ付き入力ストリーム

package IO.bufferedstream;

import java.io.*;

public class BufferedStreamExample {
    public static void main(String[] args) {
        InputStream inputStream = null;
        BufferedInputStream bufferedInputStream = null;
        OutputStream outputStream = null;
        BufferedOutputStream bufferedOutputStream = null;

        try {
            inputStream = new FileInputStream("D:\\screenshot.png");
            bufferedInputStream = new BufferedInputStream(inputStream);
            outputStream = new FileOutputStream("D:\\b.png");
            bufferedOutputStream = new BufferedOutputStream(outputStream);

            long startTime = System.currentTimeMillis();

            byte[] bytes = new byte[1024];
            int read = bufferedInputStream.read(bytes);

            while (read != -1) {
                bufferedOutputStream.write(bytes, 0, read);
                read = bufferedInputStream.read(bytes);
            }

            long endTime = System.currentTimeMillis();
            System.out.println("ファイルコピーにかかった時間: " + (endTime - startTime) + "ミリ秒");

            bufferedOutputStream.flush();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            try {
                if (bufferedOutputStream != null) {
                    bufferedOutputStream.close();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
                if (bufferedInputStream != null) {
                    bufferedInputStream.close();
                }
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

文字入力ストリーム: Reader

文字出力ストリーム: Writer

バッファ付き文字入力ストリーム: BufferedReader

バッファ付き文字出力ストリーム: BufferedWriter

package IO.readerwriter;

import java.io.*;

public class ReaderWriterExample {
    public static void main(String[] args) {
        Reader reader = null;
        BufferedReader bufferedReader = null;
        Writer writer = null;
        BufferedWriter bufferedWriter = null;

        try {
            reader = new FileReader("D:\\abc.txt");
            bufferedReader = new BufferedReader(reader);
            writer = new FileWriter("D:\\a.txt");
            bufferedWriter = new BufferedWriter(writer);

            char[] chars = new char[1024];
            bufferedReader.read(chars);

            for (char c : chars) {
                System.out.println(c);
            }

            bufferedWriter.write(chars);
            bufferedWriter.flush();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            try {
                if (bufferedWriter != null) {
                    bufferedWriter.close();
                }
                if (writer != null) {
                    writer.close();
                }
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

タグ: Java I/O InputStream OutputStream Reader

9月15日 22:42 投稿