美文网首页
Java学习——day 15

Java学习——day 15

作者: 振礼硕晨 | 来源:发表于2019-01-12 09:51 被阅读0次

    主要内容

    • 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("文件关闭失败");
                    }
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java学习——day 15

          本文链接:https://www.haomeiwen.com/subject/ntcvrqtx.html