java i o总结_Java I/O 总结

一、IO流的三种分类方式

1.按流的方向分为:输入流和输出流

2.按流的数据单位不同分为:字节流和字符流

3.按流的功能不同分为:节点流和处理流

二、IO流的四大抽象类:

字符流:Reader Writer

字节流:InputStream(读数据)

OutputStream(写数据)

三、InputStream的基本方法

int read() throws IOException 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾

void close() throws IOException 关闭流释放内存资源

long skip(long n) throws IOException 跳过n个字节不读

四、OutputStream的基本方法

void write(int b) throws IOException 向输出流写入一个字节数据

void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

五、Writer的基本方法

void write(int c) throws IOException 向输出流写入一个字符数据

void write(String str) throws IOException将一个字符串中的字符写入到输出流

void write(String str,int offset,int length)

将一个字符串从offset开始的length个字符写入到输出流

void flush() throws IOException

将输出流中缓冲的数据全部写出到目的地

六、Reader的基本方法

int read() throws IOException 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾

七、节点流类型

八、访问文件之FileInputStream和FileOutputStream继承基类用于向文件中输入输出字节

九、访问文件之FileReader和FileWriter继承基类用于向文件中输入输出字符

十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。

此处理流的构造方法都得传相对应的基类类型

BufferedReader:提供了readLine方法用于高校读取一行字符串

BufferedWriter:提供了newLine用于写入一个行分隔符也就是换行

BufferedInputStream没多大用处

BufferedOutputStream没多大用处

十一、转换流:主要作用将字节流转换成字符流。用处较大!

转换流在构造时可以指定其编码集合

InputStreamReader需要和InputStream套接

OutputStreamWriter需要和OutputStream套接

例:OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream(文件路径);

方法例:osw.getEncoding();获得流的编码方式

十二、数据流与字节数组流:

数据流主要为实现可以存取Java原始数据类型如long,boolean

数据流是字节流

DataInputStream需要和InputStream套接

DataOutputStream需要和OutputStream套接

DataInputStream方法:readBoolean() readInt() read……()……

readUTF():网络传输常用方法 读一个Unicode字符串

DataOutputStream方法与DataInputStream基本对应为写的方法

//此构造函数等于已可以往一个字节数组里输入内容

ByteArrayOutputStream baos = new ByteArrayOutputStream();

//此方法为获取一个字节数组方法返回字节数组

baos.toByteArray();

//此方法获取字节数组占了多少字节

new ByteArrayInputStream(一个字节数组)。available()

1ByteArrayOutputStream baos =2newByteArrayOutputStream();3DataOutputStream dos =4newDataOutputStream(baos);5try {6dos.writeDouble(Math.random());7dos.writeBoolean(true);8ByteArrayInputStream bais =9newByteArrayInputStream(baos.toByteArray());10System.out.println(bais.available());11DataInputStream dis =newDataInputStream(bais);12System.out.println(dis.readDouble());13System.out.println(dis.readBoolean());14dos.close();  dis.close();15}catch(IOException e) {16e.printStackTrace();17}

十二、Print流

Print流只有输出流无输入流,PrintWriter和PrintStream分别针对字符字节

两个类提供了重载的Print和Println方法用于多种数据类型的输出

PrintWriter和PrintStream的输出操作不会抛出异常

PrintWriter和PrintStream有自动flush功能

----System.setOut(接收OutputStream类):用于设置系统默认输出流

十二、Object流

等同于c#序列化,用直接将Object写入或读出

transient关键字为不序列化此成员变量

需要序列化的类必须实现Serializable接口

主要方法:writeObject(Object); readObject();

读出为Object类型需要强转数据类型

1importjava.io.*;2 3 public classTestObjectIO {4 public static voidmain(String args[])throwsException {5 T t =newT();6 t.k = 8;7 FileOutputStream fos =newFileOutputStream("d:/share/java/io/testobjectio.dat");8 ObjectOutputStream oos =newObjectOutputStream(fos);9 oos.writeObject(t);10 oos.flush();11 oos.close();12 13 FileInputStream fis =newFileInputStream("d:/share/java/io/testobjectio.dat");14 ObjectInputStream ois =newObjectInputStream(fis);15 T tReaded = (T)ois.readObject();16 System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k);17 18 }19 }20 21 classT22 implementsSerializable23 {24 inti = 10;25 intj = 9;26 doubled = 2.3;27 transient intk = 15;28 }

posted on 2010-08-04 10:06 asiawang 阅读(212) 评论(0)  编辑  收藏

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

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

相关文章

try...catch 语句

一般情况下,我们很少用到 try...catch 语句,但是有时候为了测试代码中的错误,也有可能会用到。小白我也在工作中用到过。那么好的程序设计,什么时候会用到呢? try...catch 一般用来捕获宿主对象或者ECMAScript抛出的异…

用Mockito回答

在编写单元测试时 ,必须牢记不要依赖外部组件。 为了避免这种情况,我们使用了模拟框架,对我来说,最容易使用的是Mockito 。 在本文中,我们将看到在Mockito中使用的一种“高级”技术,可以使用Answer接口在模…

java三板斧_Java 枚举使用三板斧

Java 枚举使用三板斧1 定义public enum CountryEnums {ONE(1,"韩"),TWO(2,"魏"),THREE(3,"楚"),FOUR(4,"燕"),FIVE(5,"赵"),SIX(6,"齐");private Integer retCode;private String retMsg;// 枚举的构造方法是 pri…

假装这些是MyEclipse的快捷键(1)

Java快捷键 Alt / 代码自动补全Alt Shift S 功能菜单 Ctrl 1 代码自动修正Ctrl / 单行注释/取消Ctrl O 查看类的所有方法Ctrl T 查看类的集成架构图Ctrl Shift / 多行注释Ctrl Shift \ 取消多行注释Ctrl Shift F 代码格式化转载于:https://www.cnblogs.com/swordt…

JasperReports JSF插件用例–简单列表报告

这是JasperReports JSF插件系列的第一篇“用例文章” ,我将专注于一个简单的需求,并且我将进一步深入。 起点是我们已经为图书商店完成的项目设置,我将向其中添加一个列表,其中包含在数据库中注册的其他图书,该列表也将…

2016.10.17先占坑

2016.10.17先占坑转载于:https://www.cnblogs.com/amurzet/p/5978986.html

ER图流程图

ER图:ER图分为实体、属性、关系三个核心部分。实体是长方形体现,而属性则是椭圆形,关系为菱形。 图书馆管理系统流程图(图片源于网上):对于程序员来说,我们要知道:整个系统中&#x…

php源码仿三一重工,织梦仿三一重工业大学气企业网站php源码

★模板引荐★源码称呼:仿三一重工业大学气企业网站php源码仿三一重工业大学气企业网站php源码,尝试完备无错,兼容合流欣赏器。模板包括安置证明,并包括尝试数据。本模板鉴于DEDECms 5.7 GBK安排,须要 UTF-8版本的请本人…

接触Jenkins(Hudson)API,第2部分

这篇文章从本教程的第1部分继续。 已经快一年了,但是我终于有时间重新审视我为与Jenkins api交互而编写的一些代码。 我已经使用了部分工作来帮助管理许多Jenkins构建服务器,主要是保持插件同步以及将作业从一台机器移动到另一台机器。 在本文中&#xf…

php树莓派魔镜,用树莓派和显示器制作一面“魔镜”

所需要的材料一台显示器一块和显示器大小相同的双面镜一些2*4米的细木条树莓派机器必要组件(电源、HDMI线、usb无线网卡、键盘)木工工具(锯子、磨砂机、螺丝刀)螺丝、液态钉子选一个合适的显示器镜子的大小完全由显示器的类型和大小决定,所以我希望得到一个尽量大的…

【数字图像处理】[3]--直方图规范化

【数字图像处理】[3]--直方图规范化直方图规范化出现的原因是因为直方图均衡只能产生出固定的图像,不满足于需求,有时我们需要让直方图变成特定的直方图,于是有了直方图规范化原理:可能只看公式没什么感觉,我们来举一个…

JavaFX 2.0布局窗格– GridPane

毫无疑问, GridPane是JavaFX 2.0中功能最强大,最灵活的布局窗格。 它在由行和列组成的灵活网格中布置其子项,与Swing的GridBagLayout或HTML的表格模型非常相似。 这种方法使该窗格非常适合于任何形式的表单(例如网站上的联系表单&…

leecode 题解 || Merge k Sorted Lists 问题

problem: Merge k sorted linked lists and return it as one sorted list.Analyze and describe its complexity.Tags Divide and Conquer Linked List Heap合并K个已序单链表 thinking: (1)题目没有要求不能够新开ListNode,所以…

PHP在浏览器中被拒绝请求,php控制请求页面浏览器缓

缓存的主要作用是防止用户频繁刷新网站页面,导致服务器数据库负担,既要保证信息更新的及时性,也要保证缓存能被充分利用。http协议里控制浏览器缓存的头有三个Cache-Control,Expires,Last-Modified,在PHP下…

js -03课 -03 js中的真假判断

真假的问题:数据类型-数字(NaN)、字符串、布尔、函数、对象(elem、[]、{}、null)、未定义真:非0的数字、非空字符串、true、函数、能找到的元素、[]、{}假:0、NaN、空字符串、false、不能找到的…

HBASE启动失败,Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster

Master日志错误:2015-12-02 06:34:32,394 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMasterat org.apache.hadoop.hbase.master.HMaster.constru…

Java线程:我应该创建几个

介绍 “我应该创建多少个线程?”。 许多年前,我的一个朋友问我这个问题,然后我按照“ CPU核心数 1”的指示给了他答案。 当您在这里阅读时,大多数人都在点头。 不幸的是,我们所有人当时都错了。 现在,如果您…

java ui自动化测试脚本,如何用Airtest编写UI自动化脚本(示例代码)

前言游戏并不像app一样直接把渲染树节点暴露出来,这就造成游戏UI自动化在元素定位上的不方便性,不过依赖airtest的图片识别,我们可以直接跳过元素检查,以图片对比的形式进行自动化,虽然效率可能会低一些,但…

Spring JDBC数据库连接池设置

对于任何Java应用程序而言, 在Spring框架中设置JDBC数据库连接池都是很容易的,仅需更改spring配置文件中的一些配置即可。使用Apache Commons DBCP和Commons Pool以及Spring框架的连接池是不错的选择,但是如果您拥有Web服务器和托管的J2EE容器…

BZOJ 3505 [Cqoi2014]数三角形(组合数学)

【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id3505 【题目大意】 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个。   注意三角形的三点不能共线。 【题解】 我们计算三个点组合的情况,去除横竖三共线,以及斜…