java.ioパッケージは、データストリームやシリアライゼーション、ファイルシステムを通じたシステム入出力を提供します。
java.ioパッケージには次に示すクラスがある。
Class | Description |
---|---|
OutputStream | バイと出力ストリームを表現する全てのクラスのスーパークラス |
Writer | 文字ストリームに書き込むための抽象クラス |
キーボードから文字列を入力するJavaソースコードの例を次に示す。
import java.io.*;
class KeyboardInput {
public static void main(String arg[]) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("文字列を入力してください: ");
try {
String line = br.readLine();
System.out.println(line);
} catch (IOException e) {
e.printStackTrace();
}
}
}
キーボードから文字列を入力するサンプルコードの実行例を次に示す。
$ java KeyboardInput
文字列を入力してください: Java
Java
$
ファイルからデータを読み込み、他のファイルへ書き出す(つまりファイルコピー)例を次に示す。
まずは、FileInputStreamからバイト列を読みだして、FileOutputStreamに書き込む例。
import java.io.*;
class FileCopy1 {
static final int BUFSIZE = 80;
public static void main(String arg[]) {
try {
FileInputStream fis = new FileInputStream(arg[0]);
FileOutputStream fos = new FileOutputStream(arg[1]);
byte buff[] = new byte[BUFSIZE];
int len;
while ((len = fis.read(buff, 0, BUFSIZE)) != -1) {
fos.write(buff, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
次に、FileInputStreamから1文字づつ読みだして、FileOutputStreamに1文字づつ書き込む例。
import java.io.*;
class FileCopy2 {
public static void main(String arg[]) {
try {
FileInputStream fis = new FileInputStream(arg[0]);
FileOutputStream fos = new FileOutputStream(arg[1]);
int ch;
while ((ch = fis.read()) != -1) {
fos.write(ch);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
最後に、BufferedReaderから1行読みだして、PrintStreamに1行書き出す例。
import java.io.*;
class FileCopy3 {
public static void main(String arg[]) {
try {
FileInputStream fis = new FileInputStream(arg[0]);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
FileOutputStream fos = new FileOutputStream(arg[1]);
PrintStream ps = new PrintStream(new BufferedOutputStream(fos));
String line;
while ((line = br.readLine()) != null) {
ps.println(line);
}
ps.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}