使用try catch finally关闭文件流:

  写入文件:

import java.io.*;
public class exp{
public static void main(String[] args) {
//流要在try外面声明,不然finally里面找不到这个流
OutputStream file = null;
try{
file = new FileOutputStream("iooooo.txt");
String str = "北邮\n";
byte[] b = str.getBytes();
for (int i=0; i<b.length; i++){
file.write(b[i]);
}
//在这里,如果发生异常,则close()不能被执行,所以要在finally里close()
//file.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(file!=null)
file.close();
}catch(Exception e){
e.printStackTrace();
}
} }
}

  读文件:

import java.io.*;
public class exp{
public static void main(String[] args) {
//流要在try外面声明,不然finally里面找不到这个流
InputStream file = null;
try{
file = new FileInputStream("ioo.txt");
int b = 0;
while(true){
b = file.read();
if(b == -1){
break;
}
System.out.println(b);
}
//在这里,如果发生异常,则close()不能被执行,所以要在finally里close()
//file.close();
}catch(Exception e){
System.out.println("try");
}finally{
try{
if(file!=null)
file.close();
System.out.println(file);
}catch(Exception e){
System.out.println("finally");
}
} }
}

字节流缓冲区拷贝文件:

import java.io.*;
public class exp{
public static void main(String[] args) throws Exception {
InputStream in = new FileInputStream("pic.png");
OutputStream out = new FileOutputStream("pp.png");
byte[] buff = new byte[1024];
int len;
while((len=in.read(buff)) != -1){
out.write(buff, 0, len);
}
in.close();
out.close();
}
}

在写这个的时候我没有仔细研究b=in.read()和b=in.read(byte[])的区别,以至于没弄懂这个buff。下面简单说明一下:

第一种:

int len;
while((len=in.read()) != -1){
out.write(len);
}

上面这种情况下in.read()返回的是从输入流中读取的8个字节的数据,并以int形式保存在len中。out.write(len);接受int中保存的数据,并将其写入out流中。

第二种:

byte[] buff = new byte[1024];
int len;
while((len=in.read(buff)) != -1){
out.write(buff, 0, len);
}

这种情况下,len=in.read(buff);中len表示的是读取字节的数目,此例就是1024,而真正存储数据的变成了buff这个字节数组。out.write(buff, 0, len);接受buff中从0到len个字节的数据,并将其写入out流中。

bingo~

字节缓冲流:存储很快~

import java.io.*;
public class exp{
public static void main(String[] args) throws Exception {
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream("pic.png"));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("pp.png"));
int b;
while((b=bis.read()) != -1){
bos.write(b);
}
bis.close();
bos.close();
}
}

java——io、字节流缓冲区拷贝文件、字节缓冲流的更多相关文章

  1. File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?

    重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...

  2. Java IO学习笔记(二)缓冲流

    处理流:包在别的流上的流,可以对被包的流进行处理或者提供被包的流不具备的方法. 一.缓冲流:套接在相应的节点流之上,带有缓冲区,对读写的数据提供了缓冲的功能,提高读写效率,同时增加一些新的方法.可以减 ...

  3. Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)

    Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...

  4. Java字节缓冲流和字符缓冲流学习

    1.字节缓冲流 首先要明确一个概念:对文件或其他目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处是,能够高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来. BufferedInp ...

  5. IO——字节缓冲流

    缓冲流:BufferedInputStream / BufferedOutputStream 提高IO效率,减少访问磁盘的次数 数据存储在缓冲区,调用flush将缓存区的内容写入文件中,也可以直接cl ...

  6. Tomcat9.0.13 Bug引发的java.io.IOException:(打开的文件过多 Too many open files)导致服务假死

    问题背景: 笔者所在的项目组最近把生产环境Tomcat迁移到Linux,算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求 ...

  7. 解决: java.io.IOException: 打开的文件过多 的问题

    问题 前一阵子公司项目做了一次压力测试, 中间出现了一个问题: 在50多个并发的时候会出现 java.io.IOException: 打开的文件过多 这个异常. 但是在没有并发的时候是不会出现这个问题 ...

  8. 字节缓冲流 ( BufferedInputStream / BufferedOutputStream)

    package com.sxt.reader; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; imp ...

  9. 1.java.io包中定义了多个流类型来实现输入和输出功能,

    1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B ...

随机推荐

  1. Luogu 3402 可持久化并查集

    点开这题纯属无聊……不过既然写掉了,那就丢一个模板好了 不得不说,可持久化并查集实现真的很暴力,就是把并查集的数组弄一个主席树可持久化. 有一点要注意的是不能写路径压缩,这样跳版本的时候会错,所以弄一 ...

  2. C++--VECTOR的简单应用

    在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<in ...

  3. android studio中退出时弹出对话框

    在app中总是不小心点击了退出怎么办?当然是加个弹出的提示框了,本人新手,就加在主界面上了 @Override public boolean onKeyDown(int keyCode, KeyEve ...

  4. Spring.Net 未将对象引用设置到对象的实例

    “/”应用程序中的服务器错误. 未将对象引用设置到对象的实例. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详 ...

  5. Web Server 在iis下部署php网站在iis下

    Web Server  在iis下部署php网站在iis下 一.参考地址: windows8 http://www.cnblogs.com/haocool/archive/2012/10/14/win ...

  6. java 乱码问题解决方案

    java  乱码问题解决方案 一.tomcat: <Connector         port="8080"         maxThreads="150&qu ...

  7. 解读人:陈秋实,SP2: Rapid and Automatable Contaminant Removal from Peptide Samples for Proteomic Analyses(标准操作流程2:如何在蛋白质组学分析中快速和自动的去除肽段样品中的污染物)

    发表时间:2019年4月 IF:3.950 单位: 威斯康星医学院生物化学系 威斯康星医学院生物医学质谱研究中心 物种:人(人体肾脏细胞和蛋白) 技术:肽段清理 一. 概述:(用精炼的语言描述文章的整 ...

  8. 资深专家深度剖析Kubernetes API Server第2章(共3章)

    欢迎来到深入学习Kubernetes API Server的系列文章的第二部分.在上一部分中我们对APIserver总体,相关术语及request请求流进行探讨说明.在本部分文章中,我们主要聚焦于探究 ...

  9. atcoder 2579

    You are taking a computer-based examination. The examination consists of N questions, and the score ...

  10. 6.House Robber(简单版抢银行)

    Level:   Easy 题目描述: You are a professional robber planning to rob houses along a street. Each house ...