7.I/Oストリームと入出力メソッド
(1)画面出力プログラム基本メソッド
●画面出力プログラムの主なメソッド[print/println]
Systemクラスのoutのオブジェクトのprintメソッドは次のとおりです。
void print(boolean b) | boolean値を表示する |
void print(char c) | 文字を表示 |
void print(char[] s) | 文字の配列を表示 |
void print(float f) | 浮動小数点を表示 |
void print(int i) | 整数を表示 |
void print(long l) | long整数を表示 |
void print(Object obj) | オブジェクトを表示する |
void print(String s) | 文字列を表示する |
(2)画面出力プログラム書式設定
●画面出力プログラムで書式設定 [applyPattern]
画面出力プログラムでで書式を設定するには「java text.DecimalFormat」クラスのapplyPatternメソッドを使用します。
package sample001;
class sample001 {
private double num1;
private double num2;
// TODO 自動生成されたメソッド・スタブ
public sample001() {
num1 = 3.14159874566632247;
num2 = 35845622;
}
// ディスプレイメソッドの宣言
public void display() {
System.out.println("デフォルトの書式で表示" + num1 + "です");
System.out.println("デフォルトの書式で表示" + num2 + "です");
}
}
package sample001;
import java.text.DecimalFormat;
public class applysample001 {
public static void main(String[] args) {
// コンストラクタが呼び出される
sample001 applysample = new sample001();
applysample.display();
DecimalFormat f = new DecimalFormat("0.000");
f.applyPattern("0.000");
// 書式を設定して表示する
//変数に値を再設定
double num1 = 3.14159874566632247;
double num2 = 35845622;
System.out.println("書式「0.000」で表示:" + f.format(num1));
f.applyPattern("#,###");
System.out.println("書式「#,###」で表示:" + f.format(num2));
}
}
(3)画面キー入力プログラム
●画面キー入力プログラムメソッド[readline]
プログラム中にキー入力を行いたい場合には「java.io.BufferedReader」クラスのreadLineメソッドを使用して入力を可能にします。
package sample002;
import java.io.BufferedReader;
import java.io.InputStreamReader;
class sample002 {
public static void main(String[] args) {
try {
// TODO: handle exception
// InputStreamReaderクラスのオブジェクトを作成
InputStreamReader reader = new InputStreamReader(System.in);
// BufferedReaderクラスのオブジェクトを作成
BufferedReader buffreader = new BufferedReader(reader);
System.out.println("文字列を入力して下さい");
// readerLineメソッドを使用して入力された文字列を取得
String str = buffreader.readLine();
System.out.println(str + "が入力されました");
} catch (Exception e) {
}
}
}
(4)I/Oストリームクラスの基本メソッド
●I/Oストリームクラス[InputStream][OutputStream]
javaのファイル操作の基本はストリームclassを使用します。ストリームとは画面、キーボード。ファイルなどでデータを扱う時にデータの流れを捉える考え方です。入力ストリームはデータの読み込みを行い、出力ストリームはデータの書き出しを行います。
①I/O.InputStream
java.io.InputStreamクラス |
int available() throws IOException | 入力ストリームから読み込むことができるバイト数を取得する。 |
void close() throws IOException | 入力ストリームを閉じ、ストリームに関連するすべてのシステムリソースを開放する。 |
public void mark(int readlimit) | 入力ストリームの現在位置にマークを設定する。 |
boolean markSupport() | 入力ストリームがmarkとresetメソッドをサポートしているかどうかを判定 |
int read() throws IOException | 入力ストリームから次のバイトデータを読み込む。 |
int read(byte[] b)throws IOException | 入力ストリームからバイト数を読み込み、それをバッファ配列bに格納する。 |
int read(byte[] b,int off,int len)throws IOException | 入力ストリームからlenバイトまでのデータをバイト配列に読み込む |
void reset() throws IOException | ストリーム位置を、入力ストリームで最後にmarkメソッドが呼び出された位置に再設定 |
long skip(long n)throws IOException | 入力ストリームからデータをnバイトだけスキップする。 |
java.io.OutputStreamクラス |
void close()throws IOException | 出力ストリームを閉じ、ストリームに関連するすべてのシステムリソースを開放する。 |
void flush() throws IOException | 出力ストリームをフラッシュし、バッファに入っている出力バイト強制的に書き込む。 |
void write(byte[] b)throws IOException | 指定されたバイト配列から出力ストリームにb.lengthバイトを書き込む。 |
void write (byte[] b,int off,int len)throws IOException | オフセットoffから始まる指定のバイト配列から、出力ストリームにlenバイトを書き込む。 |
void write(int b)throws IOException | 出力ストリームに指定されたバイトを書き込む。 |
②ファイルの読み込み書き込みの入出力を行うための主なクラス
java.io.Fileクラス | ファイルの情報を取得 |
java.io.FileInput Streamクラス | バイナリファイルのデータをバイト単位で読み込む |
java.io.FileOutputStreamクラス | バイナリファイルのデータに、バイト単位で書き込むことができる。 |
java.io.Filereaderクラス | テキストファイルのデータを文字ベースで読み込むことができる。 |
java.io.FileWriterクラス | テキストファイルのデータに文字ベースで書き込むこと。 |
③I/Oストリームクラスの基本メソッド
exists | i指定したファイルの存在をチェック |
getName | ディレクトリの名前を返す |
getParent | パス名が示す親ディレクトリのパス名を返す |
getPath | フルパス名を返す |
list | 指定したディレクトリに含まれるファイルの一覧表示 |
length | 指定したファイルのサイズを取得 |
boolean canRead() | 指定したファイルを読みこめるかどうか判定 |
boolean canWrite() | 指定したファイルに書き込めるかどうか判定 |
renameTo | 指定したファイルのファイル名を変更 |
boolean delete() | パス名が示すファイルまたはディレクトリを削除 |
createNewFile | 指定したファイルを作成する |
mkdir | 指定したディレクトリの作成 |
(5)I/Oストリームクラスの構文例
①ファイルの存在をチェック
●指定したファイルの存在を確認[exist]
指定したファイルの存在を確認するためにはjava.io.Fileクラスのexistsメソッドを使用します。
package sample003;
import java.io.File;
public class sample003 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
File file1 = new File("C:/sample.txt");
if (file1.exists()) {
System.out.println("sample.txtは存在します。");
} else {
System.out.println("sample.txtは存在しません。");
}
}
}
②テキストファイルの読み込みプログラム
●テキストファイルのデータ読み込み(FileReaderクラス)
テキストファイルのデータ読み込みはFileReaderクラスを使用します。文字数の読み込む数を指定して文字列で読み込みの対象、位置、読み込む数を引数で指定してFilereaderで読み込みます。
package sample006;
import java.io.FileReader;
public class FileR {
public static void main(String args[]) {
// TODO 自動生成されたメソッド・スタブ
System.out.println("データの読み込みを開始します");
try {
char data[] = new char[10000];
// ファイルをオープンする
FileReader fr = new FileReader("c:/sample.txt");
// ファイルを読み込む
int textcount = fr.read(data);
// 開始位置0からテキストカウント分を読み込むオブジェクトを作成
String str = new String(data, 0, textcount);
System.out.println(str);
// ファイルをクローズする
fr.close();
} catch (Exception e) {
// 例外処理を行う
System.out.println("例外" + e + "が発生しました");
}
System.out.println("データの読み込みを終了します");
}
}
⑥テキストファイルに書き込むプログラム
テキストファイルへの書き込みはFileWriterクラスでファイルをオープンしてwriteメソッドで書き込みます。以下の例はhtmlファイルに書き込みを行う例文です。
package sample007;
import java.io.FileWriter;
public class FileW {
public static void main(String args[]) {
// TODO 自動生成されたメソッド・スタブ
System.out.println("データの書き込みを開始します");
try {
// ファイルをオープンする
FileWriter fr = new FileWriter("c:/index.html");
// ファイルを読み込む
fr.write("fr.write("<!DOCTYPE html><html><head><meta charset=\"UTF-8\">
<meta name=\"keywords\" content=\"\"><meta name=\"description\" content=\"\"></head><body><h1>HELLO WORLD</h1></body></html>");
System.out.println("ファイル書き込みを完了しました");
// ファイルをクローズする
fr.close();
} catch (Exception e) {
// 例外処理を行う
System.out.println("例外" + e + "が発生しました");
}
System.out.println("データ書き込みを終了します");
}
}
⑦ファイルを作成して書き込むプログラム
テキストファイルをcreateNewFileメソッドで作成してFileWriterクラスで書き込むプログラムです。
package sample008;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class CreateF {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
File F = new File("C:/index.html");
System.out.println(F.getPath() + "を作成します");
try {
if (F.createNewFile()) {
System.out.println("ファイルを作成しました");
} else
// 例外処理を行う
System.out.println("ファイルを作成できませんでした。");
} catch (IOException e) {
}
// TODO 自動生成されたメソッド・スタブ
System.out.println("データの書き込みを開始します");
try {
// ファイルをオープンする
FileWriter fr = new FileWriter("c:/index.html");
// ファイルを読み込む
fr.write("fr.write("<!DOCTYPE html><html><head><meta charset=\"UTF-8\">
<meta name=\"keywords\" content=\"\"><meta name=\"description\" content=\"\"></head><body><h1>HELLO WORLD</h1></body></html>");
System.out.println("ファイル書き込みを完了しました");
// ファイルをクローズする
fr.close();
} catch (Exception e) {
// 例外処理を行う
System.out.println("例外" + e + "が発生しました");
}
System.out.println("データ書き込みを終了します");
}
}