IO流第一课

来源:互联网 发布:为什么淘宝提问不显示 编辑:程序博客网 时间:2024/05/22 13:10

        

System:类中的方法和属性都是静态的,包含一些有用的类字段和方法,它不能被实例化。

Out:标准输出流

In:标准输入流

Properties Hashtable的子类,也就是Map集合的一个子类对象,那么可以通过map方法取出该集合中的元素,该集合存储的都市字符串,没有泛型定义

Properties 获取系统属性 getProperties

GBK:中文的码表

//怎样在系统中自定义一些特有的信息呢?

System.setProperty(“mykey”,”myvalue”);

//获取指定属性信息:String value = System.getProperty(“os.name”);System.out.println(value);

可以用-D属性-值给系统赋值

 

 Runtime对象

       该 类没有提供构造函数,说明不可以new对象,那么会直接想到该类中的方法都市静态的

       发现该类中还有非静态方法,说明该类中肯定会提供方法获取本类对象,而且该方法是静态的,并

       返回值类型是本类类型

这个特点可以看出该类使用了单例设计模式完成Runtime r = Runtime.getRuntime();Process p = r.exec("");

 

Math类:ceil大于这个数的最下的整数 double d =Math.ceil(15.34);

                  floor小于指定数据的最大整数

                 round:四舍五入

                pow:几次幂  

               random:随机数 伪随机数,返回的是大于等于0小于1的随机数

                           int b = (int)((Math.random*10)+1)返回1-10的随机整数

                         Random r = new Random; int d = r.nextInt(10)+1;

 

IO流

           IO流用来处理设备之间的数据传输

            java地数据的操作是通过流的方式

           java用于操作流的对象都在IO包中

           流按操作数据分为两种:字节流和字符流

          流按流向分为:输入流,输出流;

 

字节流的抽象基类:InputStream,OuputStream

字符流的抽象基类:Reader,Writer

注:由这四个类派生出来的子类名称都是以其父类名作为后缀

 

数据最常见体现形式:文件

需求:在硬盘上,创建一个文件并写入一些文字数据

找到一个专门用于操作文件的Writer子类对象,FileWriter,后缀名是父类名,前缀名是该对象的功能

 

flush和close区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭

 

//异常的处理方式(凡是与设备上数据发生处理关系的都会产生异常)

 

字节流转换为字符流 InputStreamReader  system.in 

//键盘录入  因为readLine是Reader的子类,所以需要将字节转换成字符流

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

字符流转换成字节流OutputStreamWriter system.out

 

流操作的基本规律:

三个明确:

1、源和目的

(源:输入流,InputStream  Reader

    目的:输出流, outputStream Writer

2、操作的数据是否是纯文本

       是:字符流

      不是:字节流

3、当体系明确后,再明确要使用哪个具体的对象,通过设备来进行区分(源设备内存,硬盘,键盘)(目的设备:内存,硬盘,控制台)

如果需要提高效率,就加入缓冲区


 * 需求:将键盘录入的数据保存到一个文件中
 * 合格需求中有源和目的都存在
 * 分别分析
 * 源:InputStream Reader
 * 是不是纯文本,是,Reader
 * 设备:键盘对应的对象是System.in
 * 不是选择Reader吗?System.in对应的是字节流吗?
 * 为了操作键盘的文本数据方便,转成字符流按照字符串操作是最方便的
 * 既然明确了Reader,那么就将System.in转换成Reader  用到reader中单额装换流 InputStreamReader
 * InputStreamReader isr= new InputStreamReader(System.in);
 * 需要提高效率吗,需要 bufferedReader
 * BufferedReader bufr = new BufferedReader(isr);
 *
 * 目的:OutputStream Writer
 * 是否是纯文本,是?writer
 * 设备,硬盘一个文件,使用FileWriter,使用的是默认编码表
 * 但是存储时,需要加入指定编码表,而指定的编码表只有转换流可以指定,所以要使用的对象是OutputStreamWriter
 * 而该转换流对象要接收一个字节输出流,而且还可以操纵的文件的字节输出流,FileOutputStream
 * FileWriter fw = new FileWriter("c.txt");
 * 需要提高效率吗
 * BufferedWriter bufw = new BufferedWriter(fw);
 *
 * 扩展一下,想要把录入的数据按照指定的编码表(utf-8,默认的平台编码是GBK),将数据存到文件中
 * BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("f:\\a.txt"),“utf-8”));
 * */

原创粉丝点击