Day18第十八天 java基础 -------IO流

------- android培训java培训、期待与您交流! ----------

1、  system包含了一些有用得类字段和方法,不能被实例化,其中有一个方法是获取系统的属性的getProperties() system是系统类。

2、  Runtime对象该类中并没有提供构造函数,说明不可以进行new对象,那么就可以想到该类中的方法是为静态的方法,可以直接使用类名进行调用即可。发现该类中也存在非静态的方法,说明这些方法中肯定存在了方法来获取本类对象的而且方法为静态的,并且返回值的类型是类类型的。该方法是getRuntime是静态的返回一个Runtime对象,由这个特点可以看出,该类使用了单例设计模式。

3、  simpleDateFormat存放在java.text中;Date存在在javautil包中。

步骤: 将模式封装到simpleDateFormat对象中,调用Format方法让模式格式化指定的date对象

4、  Calendar类可以直接调用getInstarce方法来获取日历然后再通过get方法来返回字段。

5、  Math类中有一个方法是random()是随机数,也可以使用util包中的Random类。

6、  字符流和字节流:

7、  字节流两个基类:

8、  InputStream   OutputStream

9、  字符流两个基类:

     Reader      Writer

10、字符流的特点。

既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。

在该流已初始化的时候就有了与之对应的文件存在,

11、步骤:

1、  创建一个FileWriter对象,被对象被初始化的时候就必须要明确被操作的对象是什么,而且该文件会被创建到指定的目录下,如果该目录中有与之对应相同的文件名的文件,那么前一个文件就会被覆盖掉。(其实该步骤就是要明确数据要被存储的目的地。)

2、  调用writer方法,将字符写入到流中。

3、  刷新流对象中的缓冲数据,将数据刷新到目的地中去。

4、  Close关闭该流对象。Close这个方法也可以将缓冲区中的数据刷新到了目的地中去

Fluseclose的区别:fluse刷新后,流可以继续使用,而close关闭流之后,这个就不不可以继续使用了。

原理:java是调用系统中的内内容来完成数据的建立调用完成后必须去释放其资源,所以最后必须调用close方法去关闭该流对象。

使用注意:

1)、如果是在抛异常的时候去使用FileWriter进行实例化对象的时候,对象名只能再大括号内有效,不能再try以外的代码块进行调用,所以要把这个FileWriter实例化对象定义在try外面进行声明并实例化。

2)、因为close也会发生异常,所以在进行try {}catche{} finally{}中也要再进行一次try{}catch{}去抛出异常.

3)、还有一点就是要注意在写目录的时候需要的是“\\”而不是“\”因为当只有一个斜线的时候是转义字符的意识。

4)、如果是吧Filewriter定义在外面的时候,是写成FileWriter fw = null;而下在面close被它调用的时候如初出现了异常就会报空指向异常,所以为了避免这种情况的发生,就要在finally的代码块中进行判断,if!fw==null)意识是说如果fw不为空的时候,才会去执行close这个方法,如果:要有多个流都要进行关闭的时候If(!fw==null)这句话一定要写。

12、数据的续写:使用了FileWriter的一个重载的方法进行的,在使用的时候向里面传递一个true这个参数表示不去覆盖已经有的文件,要在文件的末尾处去进行数据的续写,在windows\r\n代表是一个换行符号。

13、读(Reader)的步骤:

         1)、创建一个文件读取流对象,和指定名称的文件相关联,而且要保证该文件是存在的,如果文件不存在的话会发生异常的。就是FileNotException异常。

         2)、调用读取流的对象的方法是read方法,返回的是整数,如果读取到了文件的末尾处是-1这样就有了循环的条件了,打印是,因为返回的是整数所以就要进行强制转换了。

两种写法:

1、

  while(true){

int char  =fr.read();

if(ch==-1){

break;

system.out.println(…..)

}

}


2、

  int ch = 0;

while((ch=fr.read)!=-1){  //这句话的意识是如果返回不是-1的话就继续进行向下读取,并打印出来

System.out.println(….)

}


方法二:读取个字符数组通过字符数组进行读取

  定义一个字符数组,用于存储到的字符,给readchar[])返回是读取到的个数。

14、复制文件:原理其实就是将源盘下的文件数据存储到了目标盘下,

步骤:1、在目标盘中常见一个文件用于存储源盘文件中的数据。

2、定义读取流和源盘文件关联。

3、  通过不断的读写来完成数据的存储,

4、  关闭流。

方法有两个:(1)、是读取一个,存储一个,这样的效率很低

                            2)、读取一个字符数组然后一起存储起来,这样的效率会高些。

还有一点要注意的就是读取字符的时候返回的是字符的ASCII码值,而读取字符数组的时候返回的是字符的个数,这样就要进行强制转化了。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值