`
zhouyancheng
  • 浏览: 7244 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

IO总结

阅读更多
I/O总结:
前面我们将到的File类主要是针对文件的,为非文件内容,而在IO中,这个则主要是针对文件里的内容而言了

我们这里讲IO,主要讲的就是流,什么是流?这里我打个比方,我们现在生活中所用到的水都是来自湘江的,而从湘江的水到

用户这里,就需要管道的连接,流就好比这管道用于运输的作用。

流可分为 基础字节流(原始流),过滤流(节点流

在六种InputStream和OutputStream是最普通的,还有缓冲流BufferedInputStream 和 BufferedOutputStream,跟高级的还有

Data流。

基础流和缓冲流有这很明显的区别,当基础流在读取时,是在硬盘中读取一个字长的长度,在一个一个传入虚拟机进行处理,而缓冲流则在

虚拟机中还有这一个缓冲内存,硬盘中的内容一个个传入到虚拟内存中,当虚拟内存满了再一次性传入虚拟机进行处理,这样在时间上自然就

节省了许多。

当你要创建缓冲流对象是,需要先创建基础流对象,然后在此基础上在创建缓冲流例如:
                        //创建一个inputstream对象
InputStream is=new FileInputStream(path);
//创建一个Bufferedinputstream对象
BufferedInputStream bis=new BufferedInputStream(is);

更总要的是,当只是一个基础流是,在拷贝文件时,读取出来的文件要转化成byte类型在写入,否则读出来的将会是对我们毫无用处的乱码

如下:
//获取文件长度
int length = is.available();
//定义一个byte数组
byte[] contentbyte=new byte[length];
for(int i=0;i<length;i++){
//将读取的装换为byte类型
byte b=(byte)is.read();
os.write(b);
//存储读取的字节
contentbyte[i]=b;
}
//将读取到的转换为字符串类型
String str=new String(contentbyte);
System.out.println("文件内容为: \n"+str);

还有,在读取完文件后要记得将流关闭,以免发生不必要的错误

//创建一个inputstream对象
InputStream is=new FileInputStream(path);
//创建一个Bufferedinputstream对象
BufferedInputStream bis=new BufferedInputStream(is);

//创建一个outputstream对象
    OutputStream os=new FileOutputStream(newpath);
    //创建一个bufferedoutputstream对象
    BufferedOutputStream bos=new BufferedOutputStream(os);
    int i=0;
    while((i=bis.read())!=-1){
    bos.write(i);
    }
    bos.flush();//强制将缓冲中的内容写入到文件中
    is.close();
    os.close();
    bis.close();
    bos.close();
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics