一、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)  编辑  收藏

java i o总结_Java I/O 总结相关推荐

  1. java变量的定义_Java变量_Java变量概念定义

    Java变量_Java变量概念定义 Java变量定义 java变量包含静态变量(static Variable).成员变量()和局部(local Variable )变量三种.其实,也可以说两种,静态 ...

  2. java发送简单邮件_Java程序实现发送简单文本邮件

    /** * Java程序实现发送简单文本邮件 * * @author Administrator * */ public class SendTextMail { // 定义发件人地址 public  ...

  3. java正则表达式 匹配%号_java正则表达式匹配带有括号的电话号为什么匹配不上...

    最近在学习正则表达式,尝试着同事匹配三种不同的电话号,类似如下: (012)-79461234 012-79461234 01279461234 我写的匹配方式: \(?0\d{2}[) -]?\d{ ...

  4. java 无法取消引用_Java的新手,并出现错误“无法取消引用int” - java

    我是java的新手,并且已经从事了一段时间,但是仍然收到错误消息:无法取消引用int.我看到了几个类似的问题,但仍然无法弄清自己的情况. 这是完整的代码: package inclass; class ...

  5. java处理中文字符_Java中文字符处理的四大迷题

    虽然计算机对英文字符的支持非常不错,我们也恨不得写的程序只会处理英文的数据,但是昨为中国人,无可避免地要处理一些中文字符.当很简单的一件事情,遇到了中文,一切就不同了!本文就会讲述实际生产环境中遇到的 ...

  6. java严格区分大小写吗_Java是否区分大小写?

    我在某处读到Java是区分大小写的. 我一直无法证实这一点. Java源代码是区分大小写的,如果你的意思是. 即Double与double不是同一个types,并且可以有两个不同的variablesm ...

  7. java的标记接口_Java中的标记接口?

    我被教授,Java中的Marker接口是一个空接口,用于向编译器或JVM发送信号,实现此接口的类的对象必须以特殊方式处理,如序列化,克隆等. 但最近我了解到,它实际上与编译器或JVM无关.例如,在Se ...

  8. java 模拟get登录_java 模拟get请求

    原码 /** * GET页面的内容 * * @param cityMsg * @return 返回HTML源代码 */ private  String getHtmlCode(String url,S ...

  9. java订单实现的_java订单系统的开发

    问题Exceptioninthread"main"java.lang.NoSuchMethodError:mainPressandkeytocontinue..代码是importj ...

  10. java签名算法阻止 设置_java数字签名算法之RSA

    © 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml xsi:schemaLocation="http://maven.apache.org/POM/4. ...

最新文章

  1. Validform 学习笔记---基础知识整理
  2. 成功解决urllib.error.URLError urlopen error Errno 11004 getaddrinfo failed
  3. Killzone's AI: dynamic procedural combat tactics
  4. 小技巧,怎么让MFC的MDI程序子窗口看起来有扁平的效果
  5. Windows编程之互动与动画
  6. jenkins svn/git sonarqube scanner 代码集成测试
  7. selenium报错解决 ElementNotInteractableException,element not interactable
  8. java webdriver page object_Selenium2(java)页面对象模型(Page Object) 八
  9. 因设备需求超供应预期 摩托罗拉折叠机Razr推迟在美上市时间
  10. mysql 日志抓取变化_MySQL慢查询日志分析提取【转】
  11. Python + Selenium,带你分分钟搭建 Web 自动化测试框架!
  12. 【转】Linux内核调试方法总结
  13. Win10自定义开始菜单磁贴背景颜色及图标
  14. cad填充图案乱理石_AutoCAD2017怎么填充图案 如何进行图案填充
  15. uunp身形_20个使您身形良好的网站
  16. Python 决策树
  17. perfectmoney php接口_Perfect Money完美货币注册和用支付宝提现方法
  18. HTML5期末大作业:基于HTML+CSS+JavaScript茶文化中国水墨风格绿色茶叶销售(5页) 学生网页设计作业源码
  19. 【linux】分卷压缩
  20. 计算机特殊的标点符号教案,在电脑上怎么输入比较特殊的标点符号?

热门文章

  1. Element Table 可以实现哪些常见的有用的功能
  2. 在考生文件夹存有JAVA3_注意:下面出现的“考生文件夹”均为%USER%在考生文件夹下存有文件名为J_网考网(Netkao.com)...
  3. python的matplotlib风格_matplotlib 的几种风格 练习
  4. WdatePicker获取不超过今天的值
  5. springboot mysql时区设置_java/springboot/mysql时区问题解决方案
  6. 为什么子进程每次执行顺序不一样_看完这篇还不懂Redis的RDB持久化,你来打我...
  7. rnn神经网络 层次_精讲深度学习RNN三大核心点,三分钟掌握循环神经网络
  8. input上传文件个数控制
  9. 你从未见过的 HTML5 动画效果
  10. ES6 解构赋值详解