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();
		}		
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值