博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
71-IO 流
阅读量:5881 次
发布时间:2019-06-19

本文共 3846 字,大约阅读时间需要 12 分钟。

JAVA IO 流

一.概括

1.IO(INPUT OUTPUT)流

1.1 IO 流用来处理设备之间的数据传输1.2JAVA 对数据的操作是通过流的方式1.3 JAVA 用于操作流的对象都在 IO 包中1.4 流按操作数据分两种:字节流与字符流

2. IO 流常用基类

2.1 字节流的抽象基类

InputStream, OutputStream

2.2 字符流的抽象基类

Reader, Writer(注: 由这四个类派生出来的子类名称都是以其父类名作为子类名如: InputStream 的子类 FileInputStream.Reader 的子类 FileReader)

3. 程序书写

3.1 对 IO 异常处理

必须要捕获异常原因:1 捕获了异常,报告读取错误,然后由用户处理2 程序继续读,还读不到,继续读。。。。。直到永远...

3.2在 finally 中对流进行关闭

思考:有了垃圾回收机制为什么还要调用 close 方法关闭答:Java有垃圾回收机制就像是我们的清洁工,每天会定时的打扫街道两三次,但是如果路人不爱清洁;每时每刻都在制造垃圾,,那么我们的街道时时刻刻都是脏的。而清洁工的能力和工作次数是有限的,,在这种情况下就是我们的街道也就是内存会处于高负荷状态。跟没有清洁工没两样了。。因为java的垃圾回收,用户是没有办法控制的,它会在不确定的时候触发,而且java不保证在整个程序运行期一定会触发垃圾回收,所以对于流、socket等之类的资源用完之后一定要关闭。而且垃圾回收机制对于socket、thread之类的对象即使引用计数为0了,只要还是在活动的情况下,也不会被回收。

二. 字符流(纯文本文件不包括图片)

1.创建文件

public static void testFileWriter(){        FileWriter fw  = null;        try {            fw = new FileWriter("/Users/zzy/Downloads/filewriter.txt");            fw.write("鲁A08Z72");        } catch (IOException e) {            e.printStackTrace();        } finally {            if (fw != null){                try {                    fw.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }

2.读取文件

public static void testFileReader(){            FileReader fr = null;            try {                fr = new FileReader("/Users/zzy/Downloads/项目整合步骤.txt");                char[] buf = new char[1024];                int len = 0;                while ((len = fr.read(buf)) != -1){                    System.out.println(new String(buf, 0, len ));                }            } catch (Exception e) {                System.out.println("read-exception:" + e.toString());            } finally {                if (fr != null){                    try {                        fr.close();                    } catch (IOException e) {                        System.out.println("close-exception:"+ e.toString());                    }                }            }    }

3.字符流的缓冲区

BufferedWriterBufferdReader

三. 字节流(二进制文件,十六进制文件)

public static void readFile_2()throws IOException    {        FileInputStream fis = new FileInputStream("fos.txt");        byte[] buf = new byte[1024];        int len = 0;        while((len=fis.read(buf))!=-1)        {            System.out.println(new String(buf,0,len));        }        fis.close();    }
public static void writeFile()throws IOException    {        FileOutputStream fos = new FileOutputStream("fos.txt");        fos.write("abcde".getBytes());        fos.close();    }

四.字节流转字符流

转换流: InputStreamReader,

OutputStreamWriter

public static void  testTransformer(){        //获取键盘录入对象。        //InputStream in = System.in;        //将字节流对象转成字符流对象,使用转换流。InputStreamReader        //InputStreamReader isr = new InputStreamReader(in);        //为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader        //BufferedReader bufr = new BufferedReader(isr);        //键盘的最常见写法。        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//      OutputStream out = System.out;//      OutputStreamWriter osw = new OutputStreamWriter(out);//      BufferedWriter bufw = new BufferedWriter(osw);        BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));        String line = null;        try {            while((line=bufr.readLine())!=null)            {                if("over".equals(line))                    break;                bufw.write(line.toUpperCase());                bufw.newLine();                bufw.flush();            }        } catch (IOException e) {            e.printStackTrace();        } finally {            if (bufw != null){                try {                    bufr.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }

转载于:https://www.cnblogs.com/chaoren399/p/5484374.html

你可能感兴趣的文章
sphinx
查看>>
CentOS7安装iptables防火墙
查看>>
python小程序4
查看>>
sed指定某行插入、追加、全局替换
查看>>
这款智能镜子能模拟各种光线下的化妆效果
查看>>
Linux下重置MySQL管理员密码
查看>>
centsOS下安装vsftp的配置
查看>>
我的友情链接
查看>>
ubuntu10.04在Compaq机器下如何驱动无线网卡
查看>>
jenkins 编译 vue 项目、远程发布项目 脚本
查看>>
Rsync SSH断点续传
查看>>
mysql 错误日志:Got an error reading communication packets
查看>>
html教程:1.1 HTML的基本结构
查看>>
团结才能出战斗力
查看>>
Webmin
查看>>
iOS 第三方登陆避免被APP STORE拒
查看>>
最近学习中
查看>>
webstorm 注册码
查看>>
如何低成本注册CN域名?
查看>>
【收藏改版公告】巧用家园收藏,让你在社区慧眼识“珍”【家园帮助】
查看>>