java 中的流_Java中的流(IO

Java中的流(IO流.

java.io包中定义了多个流类型(类或抽象类)来实现 输入 / 输出功能,可以从不同的角度对其进行分类:

按单位可分为: 字节流         (一个字节一个字节的读取) 字符流         (一个字符一个字符的读取『一个字符是两个字节』)

按功能不同可以分为: 节点流      (数据的传输) 处理流      (数据的处理)

按方向可以分为: 输入流         (相对于程序来说的) 输出流         (相对于程序来说的)

以下 输出输出流 图中深色的为节点流,浅色为处理流。 InputStream 继承自该类的流都是用于向程序中输入数据,且数据的单位为字节(8bit);

590e79aa1203dd57084be8c823c9bcca.gif

基本方法:

d8443fe7862babd9beb71fc6df77eae4.gif

OutputStream 继承自该类的流是用于程序中输入数据,且数据的单位为字节(8bit);

175b1aff7f4b84929b9cf61018d123a2.gif

基本方法:

24dcebe7165c15287451dc7ba862ae8b.gif

Reader 继承自该类的流都是用于向程序中输入数据,且数据的单位为字符(16bit);

49c5d1e0af728f74906dc4ac3be13f59.gif

常用方法:

1dc58c2cf47f39df3164ac58b146f1a6.gif

Writer 继承自该类的流都是用于程序中输入数据,且数据的单位为字符(16bit);

1dc5388cb38daa1f608192f87c638ca5.gif

常用方法:

b7a2a8fec9135517fdbdf192a68d2ab7.gif

7a1e679f9771c353cf7c471826f1198a.gif

7eb50446d694908630ad5a0523634dcf.gif

缓冲流: 缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,可以降低硬盘的读写次数,同时增加了一些新的方法。 SDK提供了四种缓存流,其常用的构造方法为:

d9d4f0ce64a6ccf3ec5b27f5d66b51bd.gif

转换流(转换编码):

0139edd17c76a0f87f53d32ac66200a6.gif

Print流 用于输出

40e3160db7e2ffa4e41d877dd965ba0a.gif

在使用中如下: new InputStreamReader(System.in);//监听读取键盘的输入 PrintWriter log = new PrintWriter(输入流); 另外实例:     PrintStream ps = null;     try {       FileOutputStream fos =               new FileOutputStream(“d:\\bak\\log.dat”);       ps = new PrintStream(fos);     } catch (IOException e) {       e.printStackTrace();     }     if(ps != null){       System.setOut(ps);     }

Object流 该类的Object流是保存对象用的。 注意代码:             FileOutputStream fos = new FileOutputStream(file);             BufferedOutputStream bos = new BufferedOutputStream(fos); 才可进行写的操作。 要保存对象,必须要求该对象的实体类是可序列化的『Serializable』。 transient关键字 在序列化的实体类中,使用transient关键字修饰的属性,被修饰的属性被视作透明不存在的。 实现Externalizable接口是自己写序列化,保存对象的输出流方法。

具体如下图所示:

85d2b6e679be5001ed55bf18cc886260.gif

示例代码:     public void InputStreamTest() {         /**          * 创建文件夹以及文件          */         String sep = File.separator;         String path = “E:” + sep + “MyTest”;         String fileName = “document.txt”;         File file = new File(path, fileName);         if (file.exists()) {             System.out.println(“文件路径:”+file.getAbsolutePath());             System.out.println(“文件大小:”+file.length());         } else {             file.getParentFile().mkdirs();             try {                 file.createNewFile();             } catch (IOException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }         }

/**         * 字节读取文件          */         try {             FileInputStream fis = new FileInputStream(file);             BufferedInputStream bis = new BufferedInputStream(fis);    //这些Buffered**的都是处理流(缓冲)             int b ;             while ((b=bis.read())!=-1) {                 System.out.print((char)b);             }             bis.close();             System.out.println(“\n\n”);         } catch (FileNotFoundException e) {             // TODO Auto-generated catch block             System.out.println(“未找到文件”);             e.printStackTrace();         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }

/**          * 字符读取文件          */         try {             FileReader fileReader = new FileReader(file);             BufferedReader br = new BufferedReader(fileReader);             int b ;             while ((b=br.read())!=-1) {     //使用br.readLine();可读一行数据                 System.out.print((char)b);             }             br.close();         } catch (FileNotFoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }

/**          * 字节输入文件          */         try {             FileOutputStream fos = new FileOutputStream(file);             BufferedOutputStream bos = new BufferedOutputStream(fos);             String str = new String(“所有的中文测试”);             byte[] c=str.getBytes();             bos.write(c);             bos.flush();             bos.close();         } catch (FileNotFoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }                 /**          * 字符输入文件          */         try {             FileWriter fw = new FileWriter(file,true);//写上true代表在原有的字符串后面继续写入             BufferedWriter bw = new BufferedWriter(fw);             String str = “受了点伤”;             bw.write(str.toCharArray());             bw.flush();      //将缓存中的数据完全打印             bw.close();         } catch (IOException e) {             // TODO Auto-generated catch block             System.out.println(“文件读写错误”);             e.printStackTrace();         }                 /**          * Data数据流测试,这个子类是将对象保存到了“*.txt”文件中,在文件中显示乱码          * 因为是将对象保存到了  txt  文件中,所以无法正常显示。          */         try {             FileOutputStream fos = new FileOutputStream(file);             BufferedOutputStream bos = new BufferedOutputStream(fos);             DataOutputStream dos = new DataOutputStream(bos);             double dou = Math.random();             System.out.println(dou);             dos.writeDouble(dou);             dos.flush();             dos.close();         } catch (FileNotFoundException e1) {             // TODO Auto-generated catch block             e1.printStackTrace();         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }                 /**         * Data数据流在程序之间的传递         */         try {             ByteArrayOutputStream baos = new ByteArrayOutputStream();             DataOutputStream dos = new DataOutputStream(baos);             dos.writeDouble(Math.random());             dos.writeBoolean(true);             ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());             System.out.println(bais.available());             DataInputStream dis = new DataInputStream(bais);             System.out.println(dis.readDouble());             System.out.println(dis.readBoolean());             dos.close();             dis.close();         } catch (FileNotFoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }                 /保存对象///stu对象必须实现了Serializable接口,也就是必须可序列化         public void forSaveObject(Student stu){         try {             FileOutputStream fos = new FileOutputStream(“E:/dd.dox”);             ObjectOutputStream oos = new ObjectOutputStream(fos);             oos.writeObject(stu);             oos.flush();             oos.close();         } catch (FileNotFoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基础学习_35岁零基础学习Python编程是否能学得会并用得上

首先,学习编程语言并没有年龄上的限制,在当前的工业互联网时代,不论是初级职场人还是资深职场人,学习一门编程语言都是有必要的,从这个角度来看,35岁开始学习编程语言是完全可以的。虽然说学习Python语言并…

css的再深入7(更新中···)

1.transparent 透明的 2.placeholder 提示语 写页面 搞清结构层次,保证模块化,让他们之间不能受到影响 (1) 元素性质 (2) 标准流 浮动带来的脱离文档流撑不起父级的高度的问题可以采用清除浮动的方式消除影响,absolute和fixed带来的脱…

窥探JBoss Fuse 6.1的新功能

我对即将发布的Fuse 6.1版本感到非常兴奋,因为有很多很棒的新功能是我真正想要的,而且已经有一段时间了。 HAWT工具。 因此,这是一个快速的先睹为快,主要关注于新版本的Fuse Management Console(现已由hawtio开源项目…

[C语言] 选择排序之直接选择排序的特性及实现

[C语言] 选择排序之直接选择排序的特性及实现 1、算法特性 直接选择是一种简单、不稳定的选择排序方法,属于最为基础的排序方法之一。 其时间复杂度最好情况为O(n)、最差为O(n)、平均为O(n)&…

电脑测速软件_联通你我【宽带提速】让网速飞!超实用的宽带测速提速攻略来啦!...

宅在家里,在家娱乐、在家办公、在家上课,都需要畅快的宽带网络,所以很多小伙伴都办理了联通宽带怎样才是正确的宽带测速姿势?小沃给大家介绍两种简便的测速方法,同时说说怎样才能完全释放宽带网速、让咱享受到真正的提…

MyEclipse - 查询使用的JDK版本

查询 MyEclipse 使用的 JDK 版本 MyEclipse 菜单->Windows->Proferences->java->Installs Jres重新设置JDK路径,改为开发程序时的JDK版本(如上图)(我做到这一步就可以了!我的eclipse是7.0,jdk…

解析什么是绝对定位,相对定位与浮动

在理解定位之前,先说一个概念,文档普通流,就是元素标签正常在HTML里的顺序,块级元素从上至下排列,行内元素从左到右排列。 绝对定位 绝对定位:absolute,元素相对于离它最近的已定位祖先元素进…

具有多个查询参数的Camel CXF服务

出色的Apache Camel团队忙于解决查询中多个参数的处理问题,这是一种解决方法。 希望该帖子将在下一版本的Camel中变得过时。 (当前,我使用2.7.5) 问题 大于1的查询参数作为null值传递给Camel-CXF服务。 假设网址中有四个查询参数…

《JavaScript高级程序设计》读书笔记(三)基本概念第四小节 操作符

内容---语法 上一小节---数据类型 本小节 操作符---流程控制语句---理解函数 操作符--操作数据值的操作符--算术(如加减)、位操作符、关系、相等--ECMAScript操作符可以适用于很多类型的值--在用于对象时,会先调用对象的valueOf()和&#xff…

el-table数据不显示_数据透视表,一篇就够了

| 函数部分告一段落,这一篇文章助你学懂数据透视表目录:一、创建数据透视表二、数据透视表字段列表值的显示方式三、分析1、切片器2、计算字段3、计算项4、组合四、设计1、分类汇总2、报表布局首先,我们要知道应用数据透视表的前提&#xff1…

app vue 真机运行_使用 HBuilder 将 Vue 项目打包成手机 App

在开发移动端 app 时可以选择原生 app 和 webapp, 原生 app 体验好,开发成本高,相对的 webapp 体验要差,开发成本低。webapp 要求很低,可以说只要会开发web 站就能开发 webapp,这里不讨论怎么选择&#xff…

解决安卓字体偏移:页面整体缩放

在h5中实现一些小标签、按钮的时候,很容易发现部分安卓机型上的字体显示有问题,总会向上偏移2px左右。这是设置padding或line-height无法修复的,与rem也无关,即使在字体大于12px时依然存在。下图来自于网友的分享,从左…

bmp调色板颜色信息重复_如何更改 Linux 终端颜色主题 | Linux 中国

你可以用丰富的选项来定义你的终端主题。-- Seth Kenlon如果你大部分时间都盯着终端,那么你很自然地希望它看起来能赏心悦目。美与不美,全在观者,自 CRT 串口控制台以来,终端已经经历了很多变迁。因此,你的软件终端窗口…

mac 配置java adb环境_MAC 配置android adb命令的环境变量

1,打开终端,敲入命令:sudo vi .bash_profile (如果有密码就为本机登录密码)(如果没有这个文件就会创建一个新的)默认终端目录如图,生成的文件为隐藏文件:(显示隐藏文件命令:defaults write com.apple.finder AppleSho…

mac懒人版_这些实用的Mac软件你迟早会用到,建议收藏!

日常使用mac,遇到不同的问题可以通过不同的应用进行来进行处理,所以称手的工具是必不可少的。然而这些问题也会引导我们去发现更多实用优秀的软件,今天macdown就把自己在使用Mac过程中遇到的一些实用的Mac软件推荐给大家,相信你迟…

Metro风格的Java组合框(JMetro)–重新介绍

我上一篇有关JMetro的文章–我的都市风格的Java外观(或外观)是关于日历选择器控件的外观 。 我本打算使用Tom Eugelink不错的日历选择器,但是当时我了解到它是由Oracle创建并随Java 8一起交付的,因此出于时间的考虑(几…

左斜杠和右斜杠有什么区别_「斜杠云」SEO推广和SEO优化有什么区别?

1,首先,从概念上来说,网络推广就是企业从开始申请域名、租用空间、网站备-案、建立网站、直到网站正式上线开始就算是介入了网络推广活动,而通常我们所指的网络推广是指通过互联网的种种手段,进行的宣传推广等活动&…

python算两个时间之间的天数,将天数转成int型

import time import datetime#计算两个日期相差天数,自定义函数名,和两个日期的变量名。 def Caltime(date1,date2):#%Y-%m-%d为日期格式,其中的-可以用其他代替或者不写,但是要统一,同理后面的时分秒也一样&#xff1…

并发编程-concurrent指南-阻塞队列BlockingQueue

阻塞队列BlockingQueue,java.util.concurrent下的BlockingQueue接口表示一个线程放入和提取实例的队列。 适用场景: BlockingQueue通常用于一个线程生产对象,而另一个线程消费对象的场景。 一个线程往里面放,另一个线程从里面取的…

博主自制丨免费下载丨免费使用丨仅用于测试

链接:点我立即下载 提取码:0j6h