IO流

IO流就是InputStream和OutputStream

这两个是字节流的顶级父类

相对与程序框来说,InputStream就是往程序输入数据,OutputStream就是输出数据

这里的输入输出是相对程序来说的

InputStream的常用方法                                         OutputStream的常用方法

    int read()                                                                                        void write(int b)  

                         从输入流读取一个8位的字节,把它转换成0~255之间                                    向输出流写入一个字节(自动将b转换成二进制的类型数据)  

                               的整数,并返回。                                                                   

    int read(byte[] b)                                                                                                    void write(byte[] b)        

                               从输入流读取若干字节,把他们保存到参数b指定                                          将参数b指定的字节数组的所有字节写到输出流

                               的字节数组中,返回的整数代表读取字节数。

       int read(byte [] b,int off,int len)                                                                        void write(byte[] b,int off,int len)

                               从输入流读取若干字节,保存到数组b,off表示数组中                                   将指定byte数组中从偏移量off开始的len个字节写入输出流

                               开始保存数据的索引,len表示读取的字节数

       void close( )                                                                                                            void flush()

                               关闭输入流,并释放与该流关联的所有系统资源                                              刷新此输入流并强制写出所有缓冲的输出字节

                                                                                                                                    void close()

                                                                                                                                                  关闭此输出流并释放与此流相关的所有系统资源

-------------------------------------------------------------------------------------------------------------------

       用字节流读取文件

              FileInputStream是InputStream的之类,它是操作文件的字节输入流

                     接下来的代码要现在当前目录下创建一个文本文件test.txt,并在里面写下”itcast“

       

import java.io.*;
public class 字节流读写文件 {
  public static void main(String[] args) throws Exception{
	FileInputStream in = new FileInputStream("test.txt");
	int b = 0;
	while(true){
		b = in.read();
		if(b == -1)
			break;
		System.out.println(b);
	}
	 in.close();
  }
 
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  用字节流写文件

     FileOutStream是相对FileOutStream的子类,它是操作文件的字节输出流,专门把用于数据写入文件

      

import java.io.*;
public class 写入数据 {
   public static void main(String[] args)throws Exception {
	FileOutputStream out = new FileOutputStream("test.txt");//FileOutStream的构造函数FileOutStream(String fileName,boolean append)如果将
	String str = "我的文件";                                  //参数boolean设置为true,则会在已存在的文件中追加内容
	byte[] b=str.getBytes();
	for(int i = 0 ;i < b.length; i++)
	{
		out.write(b[i]);
	}
	out.close();
}
   
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  IO流会产生异常,所以要用throws将异常抛出,然而一旦遇到异常,close()方法将无法执行,流对象所占用的资源将得不到释放,为此,通常将关闭流的代码写在finally代码块中

finally{
   try{
      if(in!=null)  //如果in不为空,关闭输入流
        in.close()
  }catch (Exception e){
      e.printStackTrace();
  }
   try{
      if(out!=null)          //如果out不为空,关闭输出流
        out.close();
   }catch (Exception e){
      e.printStackTrace();   
   }
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  文件的拷贝

  

<span style="font-size:14px;">public class 文件的拷贝 {
  public static void main(String[] args)throws Exception {
	InputStream in =new FileInputStream("source\\Beyond.mp3");
	  //创建一个字节输入流,用于读取当前目录下的source文件中的mp3文件
	OutputStream out =new FileOutputStream("target\\Beyond.mp3");
	   //创建一个字节输出流,用于将读取的数据写入target目录下的文件中
	int len;             //定义一个int类型的变量len,记住每次读取的一个字节。
	long begintime = System.currentTimeMillis();    //当前系统时间
	while((len = in.read()) != -1){                   //读取一个字节并判断是否读到文件末尾
		out.write(len);                               //将读取到的字节写入文件
	}
	long endtime=System.currentTimeMillis();             //获取拷贝结束时的系统时间
	System.out.println("拷贝文件所消耗的时间是:"+(endtime-begintime)+"毫秒");
	in.close();
	out.close();
}
}</span>
   上面的代码是一个字节一个字节的读取,效率不高,可以定义一个字节数组作为缓冲区,一次性读取多个字节的数据,并保存在数组里,然后将字节数组中的数据一次性写入文件。

 

public class 文件的拷贝 {
  public static void main(String[] args)throws Exception {
	InputStream in =new FileInputStream("source\\Beyond.mp3");
	  //创建一个字节输入流,用于读取当前目录下的source文件中的mp3文件
	OutputStream out =new FileOutputStream("target\\Beyond.mp3");
	   //创建一个字节输出流,用于将读取的数据写入target目录下的文件中
	byte[] buff = new byte[1024];     //定义一个缓冲区,用来读写文件
	int len;             //定义一个int类型的变量len,记住每次读取的一个字节。
	long begintime = System.currentTimeMillis();    //当前系统时间
	while((len = in.read(buff)) != -1){                   //读取一个字节并判断是否读到文件末尾
		out.write(buff,0,len);                               //将读取到的字节写入文件
	}
	long endtime=System.currentTimeMillis();             //获取拷贝结束时的系统时间
	System.out.println("拷贝文件所消耗的时间是:"+(endtime-begintime)+"毫秒");
	in.close();
	out.close();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值