Javaバッファフロー&変換フローの練習問題の答え

5851 ワード

基礎問題
練習1:効率的なバイト出力ストリームはバイトデータを書き出します
説明:効率的なバイト出力ストリームを用いてCディスクの下のd.txtファイルに1バイト数を出力します.回答操作手順:1.バイト出力ストリームオブジェクト関連ファイルパス2を作成する.バイト出力ストリームオブジェクトを用いる効率的なバイト出力ストリームオブジェクト3を作成する.効率的なバイト出力ストリームオブジェクトを呼び出すwriteメソッドは1バイト4を書く.効率的なストリームを閉じ、リソースを解放します.コード:
public class Test01_01 {
	public static void main(String[] args) throws IOException {
		//        FileOutputStream         。
		FileOutputStream fos = new FileOutputStream("c:\\d.txt");
		//                   
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		//             write(int byte)          
		bos.write(97);
		//    
		bos.close();
	}
}

練習2:効率的なバイト出力ストリームはバイト配列データを書き出します
説明:効率的なバイト出力を利用してCディスクの下のe.txtファイルにバイト配列データを書き出します.例えば、「i love java」の答え操作手順:1.バイト出力ストリームオブジェクト関連ファイルパス2を作成する.バイト出力ストリームオブジェクトを用いる効率的なバイト出力ストリームオブジェクト3を作成する.文字列を定義して、出力するデータを格納し、文字列をバイト配列に変換します.4.効率的なバイト出力ストリームオブジェクトのwriteメソッドを呼び出してバイト配列を出力します.5.効率的なフローをオフにします.コード:
public class Test01_02 {
	public static void main(String[] args) throws IOException {
		//        FileOutputStream         。
		FileOutputStream fos = new FileOutputStream("c:\\e.txt");
		//                   
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		//             write(byte[] buff)          
		bos.write("i love java".getBytes());
		//    
		bos.close();
	}
}

練習3:効率的なストリームファイルのコピー
説明:効率的なバイト入力ストリームと効率的なバイト出力ストリームを使用してファイルのコピーを完了します.要求:1.Cディスク下のc.pngファイルをDディスク下2にコピーする.1バイト配列を1回読み書きでコピーする手順:1.バイト入力ストリームオブジェクトを作成し、ファイルパス2を関連付ける.バイト入力ストリームオブジェクトを用いる効率的なバイト入力ストリームオブジェクト3を作成する.バイト出力ストリームオブジェクトを作成し、ファイルパス4を関連付ける.バイト出力ストリームオブジェクトを用いて効率的なバイト出力ストリームオブジェクト5を作成する.読み出しを格納ためのバイト配列を作成するバイト数6.高効率バイト入力ストリームを用いてファイルデータをループ読み出し、1バイト配列を読み出すごとに、高効率バイト出力ストリームオブジェクトを用いてバイト配列の内容をターゲットファイルに出力する.ファイルの最後まで読み込みます.7.効率的なストリームオブジェクトコードをオフにします.
public class Test01_03 {
	public static void main(String[] args) throws IOException{
		//                 
		FileInputStream fis = new FileInputStream("c:\\c.png");
		//                     
		BufferedInputStream bis = new BufferedInputStream(fis);
		//                 。
		FileOutputStream fos = new FileOutputStream("d:\\c.png");
		//                   
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		//              
		byte[] buffer = new byte[1024];
		//             
		int len = -1;
		//         
		while((len = bis.read(buffer)) != -1) {
			//                    
			bos.write(buffer,0,len);
		}
		//    
		bis.close();
		bos.close();
	}
}

練習4:効率的な文字ストリームと集合の総合的な使用
説明:以下の需要を分析し、コードで検証コードウィジェットを実現し、以下のように要求する.プロジェクトルートディレクトリの下に新しいファイルを作成します:data.txt,キーボードは3つの文字列検証コードを入力dataに格納.txtでは、1つの検証コードが1行を占めることが要求される.2.キーボードは、入力認証コードがdataである場合、検証する必要がある認証コードを入力する.txtに存在する:コンソールプロンプト検証に成功し、コンソールプロンプト検証に失敗した答えコードが存在しない場合
public class Test01_04 {
	public static void main(String[] args) throws Exception {
		//    3              data.txt   
		writeString2File();
		//     
		verifyCode();
	}
	/**
	*      
	* @throws Exception 
	*/
	private static void verifyCode() throws Exception {
		//  ArrayList  ,        3    
		ArrayListlist = new ArrayList<>();
		//             ,  data.txt    
		BufferedReader br = new BufferedReader(new FileReader(new File("data.txt")));
		String line = null;
		//       
		while(null!=(line = br.readLine())) {
			//            list   
			list.add(line);
		}
		//     
		br.close();
		//        
		Scanner sc = new Scanner(System.in);
		//         
		System.out.println("        ");
		String code = sc.nextLine();
		if(list.contains(code)) {
			System.out.println("    ");
		} else {
			System.out.println("    ");
		}
	}
	/**
	*     3              data.txt   
	* @throws Exception 
	*/
	private staticvoid writeString2File() throws Exception {
		//               data.txt    
		BufferedWriter bw = new BufferedWriter(new FileWriter(new File("data.txt")));
		String line = null;
		//        
		Scanner sc = new Scanner(System.in);
		for(inti = 0;i<3;i++) {
			System.out.println("    "+(i+1)+"       ");
			//                
			line = sc.nextLine();
			//                
			bw.write(line);
			//     
			bw.newLine();
		}
		//     
		bw.close();
	}
}

練習5:変換出力ストリームの使用
説明:既存の文字列:“Javaが好きです”.この文字列を現在のプロジェクトルートディレクトリのa.txtファイルに保存します.要求:gbk符号化で保存する.注意:ideaのデフォルト符号化はutf-8なので、filesettingsfile encodingsでgbk形式に設定できます.そうしないと、a.txtファイルを開くと文字化けして表示されます.回答操作手順:1.ファイルバイト出力ストリーム関連ターゲットファイル2を作成する.ファイルバイト出力ストリームに基づいて変換出力ストリームオブジェクトを作成し、符号化文字セットをgbk 3と指定する.ストリームオブジェクトを呼び出す方法は、文字列をファイルに書き出します.4.ストリームをシャットダウンし、リソースを解放します.コード:
public class Test01_05 {
	public static void main(String[] args) throws IOException{
		//        
		String content = "  Java";
		//          
		FileOutputStream fos = new FileOutputStream("a.txt");
		//          
		OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");
		//         
		osw.write(content);
		//        
		osw.close();
	}
}

練習6:変換入力フローの使用
説明:変換入力ストリームを使用して、現在のプロジェクトルートディレクトリの下でgbkで符号化されたa.txtファイルの内容を読み出し、コンソールに印刷します.要求:文字化けしてはいけません.回答操作手順:1.バイト入力ストリームオブジェクトを作成してファイルパスを指定します.2.バイト入力ストリームオブジェクトから変換入力ストリームオブジェクトを作成し、文字セットの符号化をgbk 3と指定する.変換入力ストリームオブジェクトの読み出し方法を呼び出してコンテンツ4を読み出す.ストリームを閉じてリソースコードを解放するには、次の手順に従います.
public class Test01_06 {
	public static void main(String[] args) throws IOException{
		//               
		FileInputStream fis = new FileInputStream("a.txt");
		//          
		InputStreamReader isr = new InputStreamReader(fis,"gbk");
		//              
		char[] buffer = newchar[1024];
		//              
		intlen = -1;
		while((len = isr.read(buffer)) != -1) {
			System.out.print(new String(buffer,0,len));
		}
		//    
		isr.close();
	}
}