一、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) :告知此字符串是否匹配给定的正则表达式。