20201013戚权
知识点
1.File
- Java虚拟机中的一个 File 实例表示一个路径,这个路径可能对应一个文件或一个目录 。
- File 类的实例所表示的路径,可能存在于磁盘上,也可能在磁盘上根本不存在。
- File 类是不可变的; 也就是说,一旦创建,由 File 对象表示的抽象路径名永远不会改变。
- 访问文件中的内容,需要通过文件输入流来实现。(后边会介绍)
1. 1判断是否存在
- 当File实例所表示的路径在磁盘上存在时返回 true ,否则返回 false 。
public static void main(String[] args) {
File fod = new File("d:\temp");
System.out.println("d:\temp is exist --> " + fod.exists());
File file = new File("d:\斗破苍穹.txt");
System.out.println("d:\斗破苍穹.txt is exist --> " + file.exists());
}
1.2判断是否是文件
- 当File实例所表示的路径在磁盘上 存在 并且 是个文件 时返回 true ,否则返回 false 。
public boolean isFile()
1.3判断是否是目录
public boolean isDirectory()
1.4判断是否是隐藏文件
public boolean isHidden()
1.5判断是否是绝对路径
public boolean isAbsolute()
- 绝对路径:从根路径开始的路径
- 相对路径:相对于文件本身的路径
1.6 获取路径及名称
public String getName()
public String getPath()
1.7获取访问时间
File fod = new File("D:/temp");
System.out.println(fod.lastModified()); //1572267462963
Date date = new Date(1572267462963L);
System.out.println(date);//Mon Oct 28 20:57:42 CST 2019
//2019-10-28 20:57:42
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);
System.out.println(str);//2019-10-28 20:57:42
1.8获取文件长度
public long length()
1.9获取规范路径
public String getCanonicalPath() throws IOException
public File getCanonicalFile() throws IOException
1.10获取权限
public boolean canRead()
public boolean canWrite()
public boolean canExecute()
1.11创建目录
public boolean mkdir()
public boolean mkdirs()
2.文件过滤器
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
public File[] listFiles(FileFilter filter)
2.1FilenameFilter
通过 FileFilter 接口的实现类的实例可实现对文件或目录的过滤,不仅可以通过文件名称或目录名称过滤,也可以通过文件长度(体积)、访问时间等属性来过滤。
boolean accept(File dir, String name)
第一个File类型参数类型的参数表示被筛选的文件或目录所在的目录
第二个String类型的参数表示被筛选的文件或目录的名称
2.2FileFilter
通过 FileFilter 接口的实现类的实例可实现对文件或目录的过滤,不仅可以通过文件名称或目录名称过滤,也可以通过文件长度(体积)、访问时间等属性来过滤。
boolean accept(File fod)
File 类型的参数表示被筛选的文件或目录
仅当 accept 方法返回 true 时,被筛选的文件或目录会保留在筛选后的列表中
3.流(Stream)
我们已经系统学习了 File 类,并且已经知道 File 类的实例用于表示文件或目录的 路径名 。
虽然我们可以通过 File 实例来访问文件或目录的元数据,甚至可以创建、删除文件或目录,但是,我们却不能通过 File 实例来访问文件中存储的内容,本节主要研究通过流来读写数据。
为了能够 读取文件中的内容 或者 向文件中写入内容 ,就需要用到文件输入流或文件输出流,本节将系统讲解通过流完成对文件内容的读取和写入操作。
3.1流
在 Java 语言中,将够 读取数据 或者 写出数据 的对象抽象为 流。
流 类似于生活当中的 水管 , 水 可以在 水管 中 定向移动 ,正如 数据 可以在 流 中定向移动。
我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出 output ,即流向内存是输入流,流出内存的输出流。
Java中 I/O 操作主要是指使用 java.io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。
这里所提及的 Stream 一词均表示流,请不要与 java.util.stream.Stream 接口混为一谈。
3.2分类
- 按照流中数据的流向来分类,可以分为 输入流 和 输出流
- 按照流处理的数据单元来分类,可以划分为 字节流 和 字符流
- 按照流的功能来分类,可以分为 节点流 和 包装流
3.3 字节流
字节流 是以 字节 为单位读写数据的输入流或输出流。下图是Java语言中提供的 字节流 的继承体系:由图可以看到, 字节流 体系种涉及的类太多,我们仅选择具有代表性的几个予以讲解,并不是全部讲解。
3.4Closeable
java.io.Closeable 接口,实现此接口的都是可以关闭的数据的源或目的地。都会实现 close() 方法。如: Scanner , InputStream , OutputStream .
public interface Closeable extends AutoCloseable
4字节输入流
4.1InputStream
InputStream 类是所有表示字节输入流的类的父类,它是个抽象类,因此不能被实例化。
public abstract class InputStream implements Closeable
4.1.1构造方法
public InputStream()
4.1.2实例方法
在所有方法中,仅 read() 方法是抽象方法,因此 InputStream 类的所有的子类都需要实现该方法。因为 InputStream 类是个抽象类,因此必须借助于其 非抽子类 来完成实例化。主要学习 FileInputStream 和 BufferedInputStream
4.2FileInputStream
FileInputStream 用于从文件系统中的某个文件中读取内容(以字节为单位)。
FileInputStream 用于读取诸如图像数据之类的原始字节流。
4.2.1构造方法
FileInputStream in = new
FileInputStream("D:\temp\zixiafaerie.jpg");
File file = new File("D:\temp\zixiafaerie.jpg");
FileInputStream input = new FileInputStream(file);
4.2.2实例方法
未被重写
public void reset() throws IOException
public void mark(int readlimit) throws IOException
public boolean markSupported() throws IOException
重写
public int available() throws IOException
public int read() throws IOException
public int read(byte[] bytes) throws IOException
public int read(byte[] bytes, int offset, int length) throws IOException
public long skip(long n) throws IOException
public void close() throws IOException
5OutputStream
5.1实例方法
5.2FileOutputStream
5.2.1 构造方法
5.2.2实例方法
public void write(int b) throws IOException
public void write(byte[] bytes) throws IOException
public void write(byte[] bytes, int offset, int length) throws IOException
public void close() throws IOException
protected void finalize()
写入单个字节
public void write(int b) throws IOException
写入多个字节
public void write(byte[] bytes) throws IOException
public void write(byte[] bytes, int offset, int length) throws IOException
以追加方式写入
public FileOutputStream (String path, boolean append)
public FileOutputStream (File file, boolean append)
5.3 BufferedOutputStream
BufferedOutputStream 类的实例表示带有缓冲功能的字节输出流,它是一种包装流
public class BufferedOutputStream extends FilterOutputStream
构造方法
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流
创建一个新的缓冲输出流,以将数据写入指定的底层输出流
实例方法
总结
今天学习了File和流,内容很多,但不是很难,需要多记忆.
近期评论