黑马程序员—java基础_IO流—字节流

------- android培训java培训、期待与您交流! ----------

1.字节流:InputStream OutputStream;字节流可以操作图片、音乐视频等

复制一个图片:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyPic {

	/**
	 * 复制一个图片
	 * 1,用字节读取流对象和图片关联。
	 * 2,用字节写入流对象创建一个图片文件。用于存储获取到的图片数据。
	 * 3,通过循环读写,完成数据的存储。
	 * 4,关闭资源。
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileOutputStream fos = null;
		FileInputStream fis = null;
		try
		{
			fos = new FileOutputStream("c:\\2.bmp");//创建一个图片输出字节流并与文件相关联
			fis = new FileInputStream("c:\\1.bmp");//创建一个图片读取字节流并与文件相关联
			
			//创建一个数组用于存储字节流
			byte[] buf = new byte[1024];
			int len = 0;
			while((len=fis.read(buf))!=-1)//循环读取图片字节流
			{
				fos.write(buf,0,len);//写入到输出流
			}
		}
		catch (IOException e)
		{
			throw new RuntimeException("复制文件失败");
		}
		finally
		{
			try
			{
				if(fis!=null)
					fis.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("读取关闭失败");
			}
			try
			{
				if(fos!=null)
					fos.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("写入关闭失败");
			}
		}
	}
	

}
通过缓冲去复制MP3

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyMp3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedInputStream bufis = null;
		BufferedOutputStream bufos = null;
		try
		{
			//创建两个缓冲区一个读一个写并与文件相关联
			bufis=new BufferedInputStream(new FileInputStream("c:\\2.mp3"));
			bufos=new BufferedOutputStream(new FileOutputStream("c:\\1.mp3"));
			
			int by=0;
			
			while((by=bufis.read())!=-1)
			{
				bufos.write(by);//将读取的字符写入缓冲区
			}
		}
		catch(IOException e)
		{
			throw new RuntimeException("复制失败");
		}
		
		finally
		{
			try
			{
				if(bufos!=null)
					bufos.close();
			}
			catch(IOException e)
			{
				throw new RuntimeException("写入关闭失败");
			}
			try
			{
				if(bufis!=null)
					bufis.close();
			}
			catch(IOException e)
			{
				throw new RuntimeException("读取关闭失败");
			}
			
		}
	}
}
2.读取键盘录入:

System.out:对应的标准输出设备控制台

System.in:对应的是标准输入设备键盘:InputStream in = System.in;键盘输入流
3.字符流与字节流之间的转换

InputStreamReader:是字节流通向字符流的桥梁,它使指定的读取字节并将其解码为字符。

OutputStreamWriter:是字符流通向字节流的桥梁,使将要写入流中的字符编码成字节。

InputStream in=System.in获取键盘的录入对象

InputStreamReader isr=new InputStreamReader(in)将字节流对象转换成字符流对象

BufferedReader bufr=new BufferedReader(isr);将字符串进行缓冲区技术的高效操作

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in))键盘的常见写法,以上3句的简写

OutputStream out=System.out

OutputStreamWriter osw=new OutputStreamWriter(out);

BufferedWriter bufw=new BufferedWriter(osw);

BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));

练习:键盘录入一行数据并打印其大写

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TransStreamDemo {

	/**
	 * 键盘录入一行数据并打印其大写:读一行
	 * readLine方法是字符流BufferedReader的方法
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//键盘的最常见写法。
		BufferedReader bufr = null;
		BufferedWriter bufw = null;
		try
		{
<span style="white-space:pre">			</span>
			bufr=new BufferedReader(new InputStreamReader(System.in));//将InputStream转换成BufferedReader,可以用readLine方法读一行
			bufw=new BufferedWriter(new OutputStreamWriter(System.out));//将OutputStream转换成BufferedWriter,可以用newLine方法换行。
			String line = null;
			while((line=bufr.readLine())!=null)//读一行的操作
			{
				if("over".equals(line))
					break;
				bufw.write(line.toUpperCase());//转换成大写输出
				bufw.newLine();//换行符
				bufw.flush();
			}
		}
		catch(IOException e)
		{
			throw new RuntimeException("运行失败");
		}
		finally
		{
			try
			{
				if(bufr!=null)
					bufr.close();
			}
			catch(IOException e)
			{
				throw new RuntimeException("输入关闭失败");
			}
			try
			{
				if(bufw!=null)
					bufw.close();
			}
			catch(IOException e)
			{
				throw new RuntimeException("输出关闭失败");
			}
		}	
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值