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=new String(bytes); input.close();//关闭流 System.out.println(data); |
注:读完数据记得将流关闭
如果是其他文件,可以将文件写出程序外(本地或者网络)。下面将讲解。
2、Outputstream
输出流:
建立一条数据传输管道,数据从程序里流到程序外(本地或者网络)。
//使用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(); |