IO流

一、File

  File对象是文件夹或路径。

  构造器:

  1、File(String pathname)

  2、File(File parent, String child)

  3、File(String parent, String child) 

   字段:File.separator:即“”,它可以根据系统自动匹配

  

  创建文件:

  boolean createNewFile()  :创建文件

  创建文件夹:

  boolean mkdir() :创建一个目录。

  boolean mkdirs() :创建多层级目录。

  删除文件或文件夹

  boolean delete() : 删除文件或文件夹(只能是空)

  获取文件或文件夹信息

  1、boolean exists() :判断文件或文件夹是否存在

  2、File getAbsoluteFile() :返回此抽象路径名的绝对路径名形式。

  3、String getAbsolutePath() :返回此抽象路径名的绝对路径名字符串。

  4、String getName() :返回由此抽象路径名表示的文件或目录的名称。

  5、String getParent() :返回此抽象路径名父目录的路径名字符串;

  6、File getParentFile() :返回此抽象路径名父目录的抽象路径名;

  7、String getPath() :将此抽象路径名转换为一个路径名字符串。

  8、boolean isDirectory() :判断是否是一个文件夹。

  9、boolean isFile() :判断是否是一个文件。

  10、long length() :返回文件的长度。

  其他常用方法:

  1、String[] list() :返回路径下文件和文件夹的String数组形式

  2、String[] list(FilenameFilter filter) :返回路径下满足过滤器的文件和文件夹的String形式

  3、File[] listFiles():返回路径下文件和文件夹的File数组形式

  4、File[] listFiles(FileFilter filter) :返回路径下满足过滤器的文件和文件夹的File数组形式

  5、File[] listFiles(FilenameFilter filter) :返回路径下满足过滤器的文件和文件夹的File数组形式

  过滤器:均是抽象类

  1、FileFilter

  下图:是获取所以文件,过滤掉文件夹

  2、FilenameFilter

二、字节流

  InputStream、OutputStream:抽象类

  文件字节输入流:FileInputStream

         构造器:

         1、FileOutputStream(File file) :创建一个向指定 File 对象表示的文件中写入数据的文       件输出流。

         2、FileOutputStream(File file, boolean append) :创建一个向指定 File 对象表示的文       件中写入数据的文件输出流,true为追加。

         3、FileOutputStream(String name) :创建一个向具有指定名称的文件中写入数据的输       出文件流。

         4、FileOutputStream(String name, boolean append) :创建一个向具有指定 name 的       文件中写入数据的输出文件流,true为追加。

         主要方法:

         1、int read() :从此输入流中读取一个数据字节。

        2、int read(byte[] b) :从此输入流中将最多 b.length 个字节的数据读入一个 byte 数       组中。

  文件字节输出流:FileOutputStream

    构造器:

    1、FileOutputStream(File file):创建一个向指定 File 对象表示的文件中写入数据的文件       输出流。

    2、FileOutputStream(File file, boolean append) :创建一个向指定 File 对象表示的文       件中写入数据的文件输出流,true为追加。

    3、FileOutputStream(String name) :创建一个向具有指定名称的文件中写入数据的输       出文件流。

    4、FileOutputStream(String name, boolean append) :创建一个向具有指定 name 的       文件中写入数据的输出文件流,true为追加。

         主要方法:

    1、void write(byte[] b) :将 b.length 个字节从指定 byte 数组写入此文件输出流中。

    2、void write(int b) :将指定字节写入此文件输出流。

  实际操作如下:

三、字符流

  继承结构如下:

  文件字符输入流:FileReader

  文件字符输出流:FileReader

  构造方法和主要方法与字节流差不多,只是读取单位为字符。

  实际操作如下:

  注意:

  1、输出流创建对象时,如果输出路径存在,不存在文件的话,会自动创建该文件。

  2、字符输出流写入内容必须使用flush或者close方法,否则不会写入内容。

  3、关流的原则:先开后关。

  4、创建数组时,不是越大越好,因为占用内容资源,需根据需求选择合适大小。

四、转换流

  作用:将字节流转换成字符流,方便操作中文,可以设置编码集

  实际操作如下(使用到了jdk7之后,处理流相关异常及关闭流的操作方式)

五、缓冲流

  用来包装其他流,提效率

       BufferedInputStream

       BufferedOutputStream

       BufferedReader     主要方法:String readLine()

       BufferedWriter      主要方法:void newLine()

六、打印流

  (常用)两个流均是打印流,除了有write方法,还提供了println、print方法。

       实际开发时,读时可以选择BufferedReader、Scanner,写时可以选择PrintWriter

       PrintStream:字节流

       PrintWriter:字符流

       实际操作如下:

  标准输入输出流、标准错误输出流

  1、System.out :是一个特殊的 PrintStream “标准”输出流 : 输出结果到控制台

  2、System.err :是一个特殊的 PrintStream "标准"错误输出流 : 输出到控制台,eclipse显示红色

  3、System.in  是一个特殊的InputStream "标准"输入流 : 数据源来至控制台输入

  标准输入输出流、标准错误输出流的重定向:例如System.out 把数据输出到控制台,       通过重定向可以改变输出的目的地

  重定向的方法:

  static void setErr(PrintStream err) 重新分配“标准”错误输出流。

  static void setIn(InputStream in) 重新分配“标准”输入流。

  static void setOut(PrintStream out) 重新分配“标准”输出流。

七、对象流

       将对象持久化到硬盘,读取硬盘中的对象

       ObjectOutPutStream

       ObjectInputStream

       实际操作如下:

  注意:持久化对象必须实现Serializable接口。

八、文件扫描器

       Scanner文件扫描器,该类实现Iterator接口(意思就是有点像迭代器)

       构造器:

       1、Scanner(File source) :可以是一个文件,对应的构造方法

       2、Scanner(InputStream source):可以是其它的输入流,对应的构造方法

       3、Scanner(String source) :仅仅从一个字符串中读取,对应的构造方法

       主要方法:

       1、、String next() :扫描到标记,默认是空格(next–hasNext搭配使用)

       2、、Scanner useDelimiter(String pattern) :自定义分割符,支持正则表达式

       3、 boolean hasNextLine() :扫描一行(nextLine-hasNextLine搭配使用)

       实际操作如下:

注意:iterable与iterator的区别:实现iterable接口的类可以使用foreach循环,这个接口提供一个获取迭代器的方法iterator();迭代器可以用来遍历集合中的元素。

九、随机访问文件

       RandomAccessFile:此类的实例支持对随机位置访问文件的读取和写入

       构造方法:

       RandomAccessFile(File file, String mode)  :mode有r(只读),rw(读写)…

       RandomAccessFile(String name, String mode)

       重要方法:

    long getFilePointer()  获得偏移量

    void seek(long pos)  设置文件指针

    long length() 返回此文件的长度

void setLength(long newLength)  设置此文件的长度

实际操作如下:

十、正则表达式

       就是限定字符串的格式,如手机号、邮箱、游戏账号

       基本写法:

       1、字符直接匹配: “abc”

       2、表示一类事物:”[0-9]”表示0到9任意一位数字,等价于”[0123456789]”

       3、数量:”[0-9]{11}” 表示十一位数字 ”[0-9]{6,18}”表示6到18位数组

       4、分组:()()() 可以用$1 $2 $3表示三个组

       5、其他使用方法可以查api

       用法:

       String中提供了很多对正则表达式支持的方法

       如:

       String[] split(String regex) :根据给定正则表达式的匹配拆分此字符串。

       String replaceAll(String regex, String replacement) :使用给定的 replacement 替换此       字符串所有匹配给定的正则表达式的子字符串。

       boolean matches(String regex) :告知此字符串是否匹配给定的正则表达式。

原文地址:https://www.cnblogs.com/zwcnblog/p/9991509.html