JAVA——IO流 篇六(流的操作規律:需求分析)

通過JAVA——IO流 篇五的規律分析以下實例。

  • 複製一個文本文件
     	1. 明確目的和源:  
     						源: Reader InputStream
     						目的: Writer OutputStream
     	2. 明確數量是否爲純文本(分析:文本文件是純文本):
     						源:Reader
     						目的:Writer
     	3. 明確具體的設備(分析:文本文件都保存到了硬盤上):
     					   源設備:硬盤——File             則可通過FileReader對象操作源
     					   目的設備:硬盤——File         則可通過FileWriter對象操作目的
        4.  是否需要其他額外功能(分析:想用上緩衝區Buffer)
     						對於源可使用字符輸入緩衝區:BufferedReader
     						對於目的使用字符輸出緩衝區:BufferWriter
    
	/**
	 * 複製文件
	 * @param sourcePath 源文件路徑
	 * @param aimPath 目的文件路徑
	 */
	public static void copyFile(String sourcePath, String aimPath ) 
	{
		//創建字符輸入緩衝區對象
		BufferedReader bufferedReader = null;
		//創建字符輸出流緩衝區對象
		BufferedWriter bufferedWriter = null;
		try {
			//創建字符輸入流對象
			FileReader fileReader = new FileReader(sourcePath);
			bufferedReader = new BufferedReader(fileReader);
			//創建字符輸出流對象
			FileWriter fileWriter = new FileWriter(aimPath);
			bufferedWriter = new BufferedWriter(fileWriter);
			int readSize = 0;
			char[] buff = new char[1024];
			//將字符輸入緩衝區的數據寫入
			while ((readSize = bufferedReader.read(buff)) != -1) {
				bufferedWriter.write(buff, 0, readSize);
			} 
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(bufferedReader != null) 
			{
				try {
					bufferedReader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if(bufferedWriter != null) 
			{
				try {
					bufferedWriter.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}		
	}
  • 讀取鍵盤錄入信息,並寫入到一個文件中。
     1.明確源和目的
     				源: Reader  InputStream
     				目的:Writer  OutputStream
     2.明確數據是否爲純文本(分析:輸入鍵盤錄入是字節流但是也是純文本數據  輸出文本文件是純文本文件)
     				源:Reader
     				目的: Writer
     3.明確具體設備
     			源設備:鍵盤 System.in  則可獲取到字節輸入流
     			目的設備:硬盤File   則可通過FileWriter對象操作目的
     4.是否需要額外功能
     			需要轉換:將鍵盤錄入的字節流進行轉換成字符流, InputStreamReader(從字節流到字符流的橋	)
     		    需要高效:用上緩衝區Buffer(BufferRead BufferWriter)
    
	/**
	 * 讀取鍵盤錄入信息,並寫入到一個文件中
	 * @param aimPath  文件路徑
	 */
	public static void keyToFile(String aimPath) 
	{
		//創建字符輸出流緩衝區
		BufferedWriter bufferedWriter = null;
		try {
			//創建將字節流轉換成字符流的對象(輸入流)
			InputStreamReader inputStreamReader = new InputStreamReader(System.in);
			//創建字符輸入流緩衝區
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
			//創建字符輸出流對象
			FileWriter writer = new FileWriter(aimPath);
			bufferedWriter = new BufferedWriter(writer);
			String readbuf = null;
			while ((readbuf = bufferedReader.readLine()) != null) {
				bufferedWriter.write(readbuf);
				bufferedWriter.newLine();
				bufferedWriter.flush();
				if (readbuf.equals("OVER")) {
					break;
				}
			} 
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(bufferedWriter != null) 
			{
				try {
					bufferedWriter.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
  • 將一個文件文件數據顯示在控制檯上
     	1. 明確源和目的
     			源: Reader  InputStream
     			目的:Writer  OutputStream	
     	2. 文件是否爲純文本文件
     			源:Reader
     			目的:Writer
     	3. 明確設備
     			源:硬盤File  FileReader
     			目的:控制檯 System.out
     	4. 是否需要額外功能
     	        需要轉換: System.out是字節流需要轉換成字符流
     	        需要高效: 添加緩衝區(Buffer) BufferedReader   BufferedWriter
    
/**
	 *  將一個文件文件數據顯示在控制檯上
	 * @param sourcePath  文件路徑
	 * @throws Exception 
	 */
	public static void fileToConsole(String sourcePath) 
	{
		BufferedReader bufferedReader = null;
		
		try {
			FileReader fileReader = new FileReader(sourcePath);
			bufferedReader = new BufferedReader(fileReader);
			OutputStreamWriter out = new OutputStreamWriter(System.out);
			BufferedWriter bufferedWriter = new BufferedWriter(out);
			char[] cbuf = new char[1024];
			int len = 0;
			while ((len = bufferedReader.read(cbuf)) != -1) {
				bufferedWriter.write(cbuf, 0, len);
				bufferedWriter.flush();
			} 
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(bufferedReader != null) 
			{
				try {
					bufferedReader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}			
	}
  • 讀取鍵盤錄入的數據,顯示在控制檯上。
     		1. 明確源和目的
     				源: Reader  InputStream
     				目的:Writer  OutputStream
     		2. 是否爲純文本文件
     				源:Reader
     		 	    目的:Writer
     		3. 明確設備
     				源:System.in
     				目的:System.out
     		4. 是否需要額外功能
     				需要轉換
     				需要高效
    
	/**
	 * 讀取鍵盤錄入的數據,顯示在控制檯上。
	 */
	public static void consoleToConsole()
	{
		InputStreamReader inputStreamReader = new InputStreamReader(System.in);
		OutputStreamWriter outputStreamWriter = new OutputStreamWriter(System.out);
		
		BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
		BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
		String line = null;
		try {
			while ((line = bufferedReader.readLine()) != null) {
				bufferedWriter.write(line);
				bufferedWriter.newLine();
				bufferedWriter.flush();
				if ("OVER".equals(line)) {
					break;
				}
			} 
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章