转换流

可以把一个字节流转换为一个字符流,原来按字节读取的字节流“套上”它以后,就可以转换为按字符读取。

   1:  import java.io.*;
   2:  public class TestTransForm1 {
   3:    public static void main(String[] args) {
   4:      try {
   5:        

OutputStreamWriter

 osw = new OutputStreamWriter(
   6:             new 

FileOutputStream

("d:\\bak\\char.txt"));
   7:        osw.write("mircosoftibmsunapplehp");
   8:        System.out.println(osw.getEncoding());
   9:        osw.close();
  10:        osw = new OutputStreamWriter(new FileOutputStream("d:\\bak\\char.txt", true),
  11:                                        "ISO8859_1"); // latin-1
  12:            //true 表示文件末尾追加                            
  13:        osw.write("mircosoftibmsunapplehp");
  14:        System.out.println(osw.getEncoding());
  15:        osw.close();
  16:      } catch (IOException e) {
  17:        e.printStackTrace();
  18:      }
  19:    }
  20:  }

OutputStreamWriter : OutputStream是字节流,Writer是字符流, 连起来的OutputStreamWriter就是把OutputStream转换成Writer

构造函数(OutputStream out)    FileOutputStream是OutputStream的子类,所以也可以传入作为参数。

本来的字节流OutputStream,外面套个OutputStreamWriter,就变成字符流

   1:  import java.io.*;
   2:  public class TestTransForm2 {
   3:    public static void main(String args[]) {
   4:      InputStreamReader isr = 

5: new InputStreamReader(System.in);

//in是系统的标准输入流,是InputStream的一个子类 ,从DOS窗口输入

   6:      BufferedReader br = new BufferedReader(isr);  
       //为何又包了一层?因为BufferedReader有个很好用的方法readline()
   7:      String s = null;
   8:      try {
   9:        s = br.readLine();
  10:        while(s!=null){
  11:          if(s.equalsIgnoreCase("exit")) break;
  12:          System.out.println(s.toUpperCase());
  13:          

s = br.readLine();

  14:        }
  15:        br.close();
  16:      } catch (IOException e) {
  17:        e.printStackTrace();
  18:      }
  19:    }
  20:  } //阻塞,不输入就不能干别的


数据流

DateOutputStream 和 DateInputStream 分别继承自OutputStream 和 InputStream  ,属于处理流

需要分别“套接”在OutputStream 和 InputStream 类型的节点流上

提供了可以存取与机器无关的Java原始数据类型(double,int…)的方法.

构造方法:DateOutputStream( OutputStream out)

DateInputStream( InputStream in )

   1:  import java.io.*;
   2:  public class TestDataStream {
   3:    public static void main(String[] args) {
   4:      

ByteArrayOutputStream baos =

   5:                          

new ByteArrayOutputStream();

  //new出一个“管道”的时候,同时自动建一个字节数组
   6:      

DataOutputStream dos =

   7:                          

new DataOutputStream(baos);

   //DataOutputStream好处是可以直接输出基本数据类型
   8:      try {
   9:        

dos.writeDouble(Math.random()); //写入一个8byte的数

  10:        

dos.writeBoolean(true); //写入一个1byte的boolean

  11:        ByteArrayInputStream bais = 
  12:            new ByteArrayInputStream(

baos.toByteArray

());
  13:        System.out.println(

bais.available()

);
  14:        DataInputStream dis = new DataInputStream(bais);
  15:        System.out.println(

dis.readDouble

());      先写先读,所以要先readdouble,再readboolean
  16:        System.out.println(

dis.readBoolean

());
  17:        dos.close();  dis.close();
  18:      } catch (IOException e) {
  19:        e.printStackTrace();
  20:      }
  21:    }
  22:  }

转载于:https://www.cnblogs.com/bevin-h/archive/2012/04/23/2466064.html

Java的I/O笔记(3)相关推荐

  1. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  2. Java加密与解密笔记(三) 非对称加密

    非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...

  3. (CZ深入浅出Java基础)线程笔记

    这是刘意老师的JAVA基础教程的笔记 讲的贼好,附上传送门 传智风清扬-超全面的Java基础 一.线程的引入 1.多线程概述 进程 a.正在运行的程序,是系统进行资源分类和调用的独立单位. b.每个进 ...

  4. java.util.List学习笔记

    概述 在Java中,List是一种特殊的集合结构,即:List是一种有序的集合.在List接口的实现中,需要提供根据列表下表对元素进行操作的方法,包括:插入,删除,查询和修改等: List一般允许重复 ...

  5. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

  6. Java快速入门学习笔记9 | Java语言中的方法

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  7. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  8. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  9. Java快速入门学习笔记6 | Java语言中的for循环语句

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  10. Java快速入门学习笔记5 | Java语言中的while循环语句

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

最新文章

  1. laravel authorize(授权)
  2. WORD拼页、书籍折页、反向书籍折页功能(3)
  3. jQuery中eq和get的区别
  4. 第二次冲刺——第7天
  5. tkinter 类继承的三种方式
  6. # 和 ## 的区别
  7. csh远程登录服务器,ubuntu远程连接服务器某一个用户(非root用户)出现sh: 1: source: not found...
  8. 故宫夜场门票被炒到3000元一张?网站被挤崩 故宫如此回应...
  9. matlab的mkdir创建新的文件夹,并把图像保存在该文件夹内
  10. uni-app 中通过 async + await + Promise 实现 request 请求同步化
  11. 单片机烧录文件格式转换(1)
  12. CSS3 3D旋转魔方
  13. 灵敏度 和 特异度的计算
  14. 工程地质计算机应用百度云,工程地质计算机应用
  15. python广义矩估计_《利用Python进行数据分析》13章(中二)建模库介绍
  16. 自学Linux 2—Linux 的系统架构之 Linux 内核的主要模块和 Linux 的文件结构
  17. linux涂鸦软件,绘图应用程序:Pinta,Krita,Tux Paint,Drawpile,MyPaint,KolourPaint
  18. 软件工程可行性研究报告
  19. Vue 生命周期流程(面向对象编程)
  20. 动作捕捉助力人-机运动协同性辅助侧翻康复辅具设计

热门文章

  1. React中使用setState
  2. 卷积、相关(matlab)
  3. java date 过时_java Date中方法toLocaleString过时的替代方案
  4. 第八讲 一阶常系数线性ODE(续)
  5. Android Handler研究(1)
  6. Ubuntu: 为firefox安装flash插件
  7. JavaScript 禁用键盘按钮
  8. SharePoint 2013/2010 中的日历重合 (Calendars Overlay)
  9. 简单的图像去噪的实现和验证码识别
  10. Windows下Android平台搭建_1