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ストリームクラスの基本メソッド
existsi指定したファイルの存在をチェック
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("データ書き込みを終了します"); } }