java之IO流

Input Output
IO流用来处理设备之间的数据传输
Java对数据的操作时通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流
流按流向分为:输入流、输出流
UNICODE每个都是两个字节
UTF-8

IO流常用基类:
字节流的抽象基类:
    InputSteam,OutputStream
字符流的抽象基类:
    Reader,Writer
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

数据的最常见体现形式是:文件。 专门用于操作文件的Writer子类对象FileWriter
1.创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件;而且该文件会被创建到指定的目录下;如果该目录下已有同名文件将被覆盖;
  //明确数据要存放的目的地
  FileWriter fw = new FileWriter("demo.txt");抛或者try异常
2.调用writer方法将字符串写入到流(内存)中;
  fw.writer("abcde");
3.刷新流对象中的缓冲中的数据;
4.将数据刷到目的地中;
  fw.flush();
5.关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据;将数据刷到目的地中和flush区别,flush刷新后流可以继续使用,close刷新后会将流关闭。

IO异常处理方式:
在外边建立引用,在try内进行初始化。
  在finally中要进行判空处理。

文件的续写:
  传递一个true参数,代表不覆盖已有的文件,并在已有文件的末尾处进行数据的续写。
  Linux \n换行 Windows \r\n换行

文本文件读取方式
  FileReader
1.创建一个文件读取流对象,和指定名称的文件相关联;要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
  FileReader fr = new FileReader("demo.txt");
2.调用读取流对象的read方法;read()一次读一个字符,而且会自动往下读;
  int ch = fr.read();
  char chr = (char)ch;
  while(true){
    int ch = fr.read();
    if(ch==-1) break;
    System.out.println(char(ch));
  }
  int ch = 0;
  while(ch = fr.read()!=-1){
    System.out.println(char(ch));
  }
2-1.定义一个字符数组,用于存储读到的字符;
  该read(char[])返回的是读到字符个数
  FileReader fr = new FileReader("demo.txt");
  char[] buf = new char[3];
  int num = 0;
  while(num=fr.read(buf)!=-1){
    System.out.println(new String(buf,o,num));
  }

TextFileTest.java
文件管理:
流类关心的是文件的内容,而File类关心的是在磁盘上文件的存储。

获取文件名示例:
FindDirectories.java

File对象还有另外两个构造器啊:
File(String path,String name) 它可以在由path参数指定的目录中创建具有给定名字的File对象。(如果path参数为null,这个构造器将使用当前目录创建File对象)。
File(File dir,String name) 其中,File对象表示一个目录,若dir为null,这个构造器就会在当前目录中创建一个File对象。

如果你在构建File对象时,确实在Windows中使用了斜线作为目录分隔符,那么getAbsolutePath方法就会返回包含斜线的文件;使用getCanonicalPath方法就可以将斜线替换成反斜线。

缓冲区数据结构:
每个缓冲区都具有:
一个容量 ,它永远不能改变;
一个读写位置,下一个值将在此进行读写;
一个界限,超过它进行读写是没有意义的;
一个可选的标记,用于重复一个读入或写出操作。
这些值满足下面的条件——0≤标记≤位置 ≤界限≤容量




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值