首页 > 代码库 > Java/IO流

Java/IO流

Java/IO流

 

1、什么是IO?

 IO流就是输入输出的意思,在java中我们的程序中与程序外需要进行数据的传输的时候就需要用到IO流,流是一种抽象的概念,当程序中与程序外进行数据传输的时候,IO流就像是一条管道一样连接着程序外的数据和程序中的数据,而数据在这条管道中就像是流水一样流进程序里,或者流出程序外(这里指的程序外,一般来说是本地,或者网络上),但是值得注意的是,这条管道具有单向流通性,只能流进程序里,或者只能流出程序里。

2、IO的用法

       1、Inputstream

           输入流:

               从程序里和程序外建立一条管道,数据从程序外流进程序里。

         //实例化输入流对象,由于Inputstream是一个接口所以采用它的一个实现类来实例化它的对象。传进去的参数为所要读取的文件路径

InputStream input=new FileInputStream(String name);

          //获取文件可读大小,将文件读进程序里

byte[] bytes=new byte[input.available()];

input.read(bytes);

 现在就将文件里的数据读进程序中的bytes数组中了,如果是文本文件的话就可以将数组里的数据构造成字符串输出查看。

String data=http://www.mamicode.com/new String(bytes);

input.close();//关闭流

System.out.println(data);

注:读完数据记得将流关闭

如果是其他文件,可以将文件写出程序外(本地或者网络)。下面将讲解。

          2Outputstream

              输出流:

                 建立一条数据传输管道,数据从程序里流到程序外(本地或者网络)。

//使用FileOutputStream实例化对象

OutputStream output=new FileOutputStream(String NewName);

//将程序里的数据写出本地,为方便起见,这里讲上面bytes数组里的数据写到本地。

output.write(bytes);

output.flush();//刷新一下,确保数据全部写完

output.close();//关闭流

 

通过IO流的使用,就可以使数据在程序里和程序外传输了。

            

 

 

3、IO拓展

   1、DataOutputStream、DataInputStream

数据IO流,里面有很多方法可以写各种数据的方法,可以直接写入字节,整型,字符,字符串。。。等等。这个IO是将OutputStream和InputStream里面的方法进行封装的,所以获取这两个流对象的方法需要将OutputStream和InputStream的对象作为参数才能构造出相应的数据IO流。

下面为示例代码:

DataOutputStream dataOutput=new DataOutputStream(output);

dataOutput.write();

dataOutput.writeInt();

dataOutput.writeBoolean();

dataOutput.writeBytes();

 

   2、BufferedInputStream、BufferedOutputStream

     缓存IO流,适合应用于大文件的读写,当我们用InputStream和OutputStream写一个较大文件时就会发现读写的效率会变得很低,而缓存IO流就可以将这个问题解决,大大提高我们对文件的读写效率。缓存IO流也是将InputStream和OutputStream进行封装出来的,所以先要得到它的对象是也需要将InputStream和OutputStream的对象作为参数传进去。

下面为示例代码:

 BufferedInputStream Bufferedinput = new    BufferedInputStream( myfileInput );

BufferedOutputStream Bufferedoutput = new BufferedOutputStream(fileOutput);

for(int bytes = Bufferedinput.read(); bytes!=-1 ; bytes = Bufferedinput.read()){

      Bufferedoutput.write(bytes);

}

Bufferedoutput.flush();//记得刷新流,确保数据全部写出。

Bufferedinput.close();//关闭流

Bufferedoutput.close();

 

  

 

    

Java/IO流