Java学习——day 15

主要内容

  • File类
  • IO流

笔记详情

1. File类

File对象是系统中文件和目录路径名的抽象表示形式。一个File类对象可以代表一个文件和目录,但不是完全对应的。建立File对象不会对系统中的文件和目录带来影响。

我们知道在系统中有文件和目录,如果我们想要在程序中操作这些文件和目录,那么就需要这些文件和目录在程序中有一个对应的抽象形式。这个时候我们就可以创建File对象,在程序中创建文件和目录的抽象形式。

我们还需要注意一点,无论这些文件和目录是否真实存在,都可以在程序中创建File对象,关联该文件和目录,系统不会报错。

下面就列出一些File类对象的常用方法:

创建File对象的方法

File file01 = new File(new File("D:/java"),"fengzhen.jpg");     // File​(File parent, String child)
File file02 = new File("D:/java/fengzhen.jpg");     // File​(String pathname)
File file03 = new File("D:/java","fengzhen.jpg");       // File​(String parent, String child)
File file04 = new File("www.baidu.com/fengzhen.jpg");       // File​(URI uri)

文件名的相关方法

方法 方法简介
getName() 文件名
getPath() 路径名,如果是绝对路径,返回绝对路径名;否则返回相对路径名
getAbsolutePath() 绝对路径名
getAbsoluteFile() 绝对路径对应的File对象
getParent() 返回相对路径的父目录,有可能为null

判断信息的相关方法

方法 方法简介
exists() File对象关联的文件是否存在
canWrite() File对象关联的文件是否可写
canWrite() File对象关联的文件是否可读
isFile() File对象关联的文件是否为文件
isDirectory() File对象关联的文件是否为文件夹
isAbsolute() File对象关联的文件是否具有跨平台,win系统以盘符开头,其他系统以/开头

长度、创建和删除的相关方法

方法 方法简介
length() 如果文件存在,返回以字节表示的文件大小;如果文件不存在,返回0
createNewFile() 文件不存在,创建爱你对应的文件,主要要进行捕获异常
delete() 删除文件
createTempFile(String prefix,String suffix,File directory) 创建临时文件
deleteOnExit() 删除临时文件
exists()

下面给出实例:

public static void main(String[] args) {

    // 创建文件
    if (!file01.exists()) {
        try {
            file01.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 删除文件
    if (!file01.exists()) {
        file01.delete();
    }

    // 创建临时文件
    File temp = null;
    try {
        temp = File.createTempFile("fen", ".temp", new File("C:/Users/Administrator/Desktop"));
    } catch (IOException e) {
        e.printStackTrace();
    }

    // 删除临时文件
    try {
        Thread.sleep(5000);
        temp.deleteOnExit();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

目录操作的相关方法

方法 方法简介
mkdir() 创建对应的文件夹,上级目录一定要存在,否则会报错
mkdirs() 常见对应的文件夹,如果上级目录不存在,则常见多级目录
list() 返回该目录下,文件及文件夹的字符串数组
listFiles() 返回该目录下,文件及文件夹对应的File对象
static listRoots() 返回系统之的根目录:win系统返回所有的盘符

2. IO流的介绍

流即流动、流向,从一段流向另外一段。在Java程序中,对于数据的输入/输出操作是以“流”方式进行的。JDK提供了各种各样的“流”类用以获取不同种类的数据。下面介绍一下IO流的分类:

根据流向分,可以分为输入流和输出流;

根据数据分,可以分为字节流和字符流:字节流针对的是二进制文件,可以处理一切文件,包括纯文本、doc、音频、视频等等;字符流针对的是文本文件,只能处理纯文本。

根据功能分,可以分为节点流和处理流。节点流包括源头,处理流可以增强功能,提供性能。

在IO流中,使用最多的是字节流和字符流。字节流中有 输入流(InputStream) 和输出流 (OutputStream) ,字符流中也有输入流 (Reader) 和输出流 (Writer)

使用IO流在处理文件的时候,一般的思路如下:

  1. 读取文件
  2. 建立与文件的联系
  3. 选择对应的流
  4. 读取文件/写出文件
  5. 释放资源

下面给出一个文件读取的实例:使用字节流的形式,读取文件中的内容:

import java.io.*;

public class Demo03 {

    public static void main(String[] args) {

        File fileTxt = new File("src/file/test.txt");
        InputStream is = null;

        try {
            is = new FileInputStream(fileTxt);
            byte[] car = new byte[100];     // 定义每次读取的字节长度
            int length;     // 表示每次读取的实际大小,用于判断是否继续进行读取
            while ((length = is.read(car)) != -1) {
                System.out.println(new String(car));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("文件未找到");
        } catch (IOException e) {
            System.out.println("文件读取失败");
        } finally {      // 最后,关闭文件输入流
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.println("文件关闭失败");
                }
            }
        }
    }
}

下面给出一个写出文件的实例:

import java.io.*;

public class Demo04 {

    public static void main(String[] args) {

        File fileTxt = new File("src/file/feng.txt");

        OutputStream os = null;

        try {
            os = new FileOutputStream(fileTxt);
            String content = new String("坚定目标,永不放弃!");
            byte[] data = content.getBytes();
            os.write(data, 0, data.length);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("文件未找到");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件写出失败");
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.println("文件关闭失败");
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/fengzhen8023/article/details/86347852