IO体系结构小结
IO体系结构 嘿嘿,是不是复制文件就是这个原理?
1.流的概念
输入和输出的抽像,类似一个水管,从一个地方流入数据,从另外一个地方输出数据(我个人比喻为:从耳朵听进(从别人那得到信息),从嘴里说出(自己的想法))
2.流的分类
按方向分:输入流(InputStream)和输出流(OutputStream)
按性质分:
a.基础字节流(原始流):(InputStream)和(OutputStream)是按最小单位读取(byte),直接连接到输入流
b.过滤流(节点流):BufferedInputStream 和BufferedOutputStream
c.基于具体数据类型的流:DateInputStream和 DateOutputStream
d.基于对象读写:ObjectOutputStream 3.InputStream是一个抽象类,不能直接实例化
FileInputStream是InputStream的子类
BufferedInputStream ,DateInputStream是FilterInputStream的子类 4.(1) InputStream中的重要方法
int available():读取的字节长度
void close():关闭输入流
int read():读取字节,虽然是int类型,但实际上读取的是byte
(2) OutputStreamde 调用方法
void close():关闭输出流
void flush():强制输出数据
void write(int b):像流中写入一个byte值 5.(1)FileInputStream:从文件中读取数据
构造方法:
FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
示例代码:
package IO体系结构;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;public class BaseIO {public String readFile2String(String filename)throws java.io.IOException{//构造输入流对象,作为一个Inputstream对象使用InputStream ins = new FileInputStream(filename);//通过文件对象创建输入流//File srcFile = new File(filename);//inputStream ins = new FileInputStream(srcFile);//根据流中的字节长度,创建一个byte数组,保存读到的数据byte[] contentByte = new byte[ins.available()];//将流中的数据读到数组中ins.read(contentByte);//还可以用循环读取//int i,j=0//while((i=ins.read())!=-1){//contentByte[j]=(byte)j;//j++;//}//将byte数组转为字符串String s = new String(contentByte);return s;}/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {BaseIO bi = new BaseIO();//读取我们正在编写的着个java文件String filename="src\\IO体系结构\\BaseIO.java";String result=bi.readFile2String(filename); System.out.println(result);}}
package IO体系结构;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class BaseIOcopy {public boolean copyfile(String srcFile,String destFlie)throws IOException{//创建从源文件来的输入流InputStream ins = new FileInputStream(srcFile);//缓冲输入流对象:如果文件中已有内容则覆盖原来内容OutputStream out = new FileOutputStream(destFlie);int i=0;//从输入流中读取一个字节while((i=ins.read())!=-1){//将这个字节写到输入流out.write(i);}ins.close();//清空输入流的缓存并关闭out.flush();out.close();return true;}/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {BaseIOcopy bic = new BaseIOcopy();//读取我们正在写的这个java源文件String srcName="G:\\蓝杰·java\\jdk1.6.CHM";//要复制到的目标文件String bakName="E:\\123.CHM";boolean result=bic.copyfile(srcName, bakName);System.out.println(result);}}
package IO体系结构;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class BaseIOhpw {public boolean bufferedcopyfile(String srcFile,String destFlie)throws IOException{File src = new File(srcFile);File dest = new File(destFlie);//创建从源文件来的输入流InputStream ins = new FileInputStream(src); //构造输入缓冲流BufferedInputStream bis = new BufferedInputStream(ins);//缓冲输入流对象:如果文件中已有内容则覆盖原来内容OutputStream out = new FileOutputStream(dest);BufferedOutputStream bos = new BufferedOutputStream(out);int i=0;//从输入流中读取一个字节while((i=ins.read())!=-1){//将这个字节写到输入流out.write(i);}ins.close();//清空输入流的缓存并关闭out.flush();out.close();return true;}/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {BaseIOhpw bic = new BaseIOhpw();//读取我们正在写的这个java源文件String srcName="G:\\蓝杰·java\\jdk1.6.CHM";//要复制到的目标文件String bakName="E:\\456.CHM";boolean result=bic.bufferedcopyfile(srcName, bakName);System.out.println(result);}}