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);
}
}
}
}