关于java 中的IO流的简单用法

1.这个类用于简单的io流,可以用来复制拷贝文件
public class copyFile {

我们可以先简单的将这个方法封装
	public static void copy(){	
		try {
在新建一个输入,一个输出的io流的过程中,会遇到报错,这时候我们需要将可能产生异常的代码块包起来
这时候我们获取到了is的输入流,以及os的输出流
			FileInputStream is=new FileInputStream("a.txt");
			FileOutputStream os=new FileOutputStream("c.txt");

我们要将is里的数据读入到os里面去,

这时还会有异常抛出,我们还要将其包起来

			int a;

定义一个int a,将is读取的数据赋值给a,
有了输入流之后,我们就要从输入流中获取数据,如何获取呢,FileInputStream已经有方法.read(),就是读取(这个方法读取的是int类型的数据)
			while((a=is.read())!=-1){
					os.write((char)a);
			}
			is.close();
os.close();
} catch (FileNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) { // TODO Auto-generated catch blocke.printStackTrace(); }}

2.io流,可以用来复制拷贝图片

和上述1的方法几乎没有区别,唯一有一点区别的是,在is输入流读取数据时,效率变得更高了,使用byte数组来读取,避免一次读一个的低效率,

	public static void copy1() {
		try {

			FileInputStream is=new FileInputStream("1111.jpg");
			FileOutputStream os=new FileOutputStream("222.jpg");

			byte a[]=new byte[1000];//使用byte数组一次性读1000个数据进去
			int b;
			while((b=is.read(a))!=-1){
			os.write(a);
			}
			is.close();//关闭输入流
			os.close();//关闭输出流
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

3.上述两个方法都还可以在速度上进行进一步的改进, 在复制一个视频文件时候,再用上述的方法就会显得比较慢,这时我们就可以采用改进的措施了。

我们可以在is输入流中采取快速读取数据的数组,还可以在os输出流中快速写入数据的数组

先新建一个数组,尽量大一点,我在这里用1000,例如,这个文件有10000字节,我们用数组只需要十次就可以读完

先新建一个数组,尽量大一点,我在这里用1000,例如,这个文件有10000字节,我们用数组只需要十次就可以写完


	public static void copyQuick() {
		try {
			FileInputStream fis=new FileInputStream("录像1.wmv");
			FileOutputStream fos=new FileOutputStream("hhh.wmv");
			byte bi[]=new byte[1000];
			int a;
			while((a=fis.read(bi))!=-1){
				byte mi[]=new byte[a];//这里新建一个数组是为了防止读取数据中会有冗余的数据
				for(int m=0;m<a;m++){//把原来读入的数组的数据传入到这个新的数组中去
					mi[m]=bi[m];
				}
				fos.write(mi);//然后再将新的数组的数据写入到输出流中
			}
			fis.close();
			fos.flush();
			fos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}



//	为了输入数据更加方便,我们要引入PrintWriter
	public static void test11() {
		try {
			PrintWriter pw=new PrintWriter("e.txt");
			pw.print("vbfshvjfdlshgifugaishrefgajdloju");
			pw.flush();
			pw.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
//	读文件的时候更简单一点
	public static void test1() {
		try {
			Scanner sc=new Scanner(new FileInputStream("e.txt"));
			while(sc.hasNextLine()){
				System.out.println(sc.nextLine());
				
			}
			sc.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值