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实例方法

image-20201013233109358

在所有方法中,仅 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实例方法

image-20201013233538746

5.2FileOutputStream

5.2.1 构造方法

image-20201013233626207

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

构造方法

创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流

创建一个新的缓冲输出流,以将数据写入指定的底层输出流

实例方法

image-20201013234210474

总结

今天学习了File和流,内容很多,但不是很难,需要多记忆.

标签

评论