JAVA中的流-简介(一)

File/文件

java.io包中/非流,不创建通道

格式:

 File file = new File("路径");
路径
  1. 绝对路径:

    1. 从盘符向下寻找;

    2. 从项目根目录开始寻找

  2. 相对路径:

    1. 从当前编辑文件路径相对于你要找的文件的路径

      ../ 上一级

    2. 试用的场合一般为寻找工程中文件

常用方法:
 //返回父目录的抽象路径
 .getparentFile();
 //文件是否存在
 .exists();
 //创建一个空的文件.该方法会抛出异常
 .createNewFile();
 //删除
 .delete();
 //获得路径
 .getAbsolutepath();
 //获得文件名
 .getName();
 //得到文件的父级,返回String
 .getParent();
 //判断是否是文件夹
 .isDirectory();
 //获得当前路径下的所有文件名
 .list();

在实际生活中我们常常需要提取某个文件夹下的某种文件,如果是得到所有文件在判断,这样显得很麻烦,java为我们提供了这样的方法

 .list(FilenmeFilter in);

这是一个list()方法的重载,传入的FilenmeFilter一个借口,我们可以通过匿名内部类的方式实现该接口,

 .list(new FilenmeFilter(){
     public boolean accept((File file),(String name)){
         if(name.endWith(".clsaa"))
             return ture;
         return false;
     }
 });

流的分类

分类方式类A类B
传输方向 输入流 输出流
传输数数据类型 字节流 字符流
操作方式 节点流 过滤流

其他:转换流


字节流-输入流

作用:读取文件。

类名:FileInputSteam

格式:

 FileInputSteam fis = new FileInputSteam("文件路径");
 //1.FileInputSteam("文件路径")会抛出异常
 //2.如果文件是相对路径,在文件夹下则只需要写文件名,在SRC下则需要加上SRC的文件夹。
 //java在编译时会为类名自动添加包名。

方法:

 int n = fis.read();
 //1.读取一个字节,以整数返回(对于汉字无法读取),存放在n中
 //2.每使用一次,光标向后移动一位
 //3.读取到末尾时返回-1
 int n = fis.((byte[] bytes));
 //1.读取byte长度的字节数,存储在bytes中
 //2.返回的n为bytes数组中读取的有效数据长度
 //3.读取到末尾时返回-1

字节流-输出流

 FileOutputSteam fos = new FileOutputSteam("文件路径");
 //1.FileOutputSteam("文件路径")会抛出异常
 //2.如果文件是相对路径,在文件夹下则只需要写文件名,在SRC下则需要加上SRC的文件夹。
 //java在编译时会为类名自动添加包名。
 //3.如果路径中的最后文件不存在,会自动添加,(但是中间的路径必须存在,不然会报错)

方法:

 fos.write();
 //用法类比.read(),包括重载.write((byte[] bytes));

流的关闭

  1. 写在finally中

  2. 先判断是否为空

  3. 关闭函数.close();

  4. 关闭流时也会抛出异常,切记一个流的关闭,一个try/catch

  5. 因为try/catch语言的独立性,所以流的声明要在try/catch语句外


字符流

上层抽象
  1. Reader/自符输入,常用实现类:FileReader

  2. Writer/自符输出,常用实现类:FileWriter

特点:读取的的是一个字符-两个字节

用法类似字节流


过滤流

缓冲流

类名:

  1. 字节输入:BufferedInputStream

  2. 字节输出:BufferedOutputStream

  3. 字符输入:BufferedReader

  4. 字符输出:BufferedWriter

构造器:

 BufferedInputStream(InputStream in);
 //缓冲流传入的是实现InputStream接口的子类
 //在关闭流时,关闭它,其内部流也会关闭

特性:

  1. 读取数度快

  2. 不关闭缓冲流,会有一部分数据保留在“缓冲管中”,造成数据的缺失

    关闭流时会执行.flush();(冲洗缓冲管方法)

  3. 在字符输入流中有一个特殊方法

     .readLine();
     //1.读取一行字符,不包括换行符(
    )
     //2.读取完成返回null
     //3.对应的.write(.....+"
    "),需要添加"
    "

打印流

类名:PrintWriter

方法:

 .println((String str));//打印并换行

 

原文地址:https://www.cnblogs.com/-Archenemy-/p/12026769.html