《JavaEE》第七周day2学习笔记-IO流1

一、文件操作

(一)概念


Java文件类(java.io.File) 表示对文件的抽象,主要用于文件|目录的创建、查找和删除等操作。

(二)构造方法


public File(String pathname)
public File(String parent, String child)
public File(File parent, String child)
public File(URI uri)

(三)常用方法


public String getAbsolutePath()返回文件绝对路径
public String getPath()返回文件相对路径
public String getName()返回文件名字
public long length() 返回文件长度(字节)
public boolean exists()判断文件是否存在
public boolean isDirectory()判断是否为目录
public boolean isFile()判断是否为文件
public boolean createNewFile() throws IOException创建空文件,当文件存在时无效
public boolean delete()删除目标,如果是目录,必须为空时才能删除!
public boolean mkdir()创建目录
public boolean mkdirs()创建目录树
public String[] list()返回当前目录的所有文件名
public File[] listFiles()返回当前目录的所有文件

(四)文件对象使用特性


1.递归打印(包含lambda、文件非隐藏判断)

    public static void searchDir(File dir) {
        File[] files = dir.listFiles(pathname -> pathname.getName().endsWith(".java")||pathname.isDirectory());
//        File[] files = dir.listFiles(new FileFilter() {
//            @Override
//            public boolean accept(File pathname) {
//                return pathname.getName().endsWith(".java")||pathname.isDirectory();
//            }
//        });
        for (File file : files) {
            if (file.isFile()) {
                System.out.println(file.getName());
            } else if (file.isDirectory()&&(!file.isHidden())) {
                searchDir(file);
            }
        }
    }

二、字节流

(一)概念


文件数据在读取和存储时,均使用二级制数字(8比特=1字节),因此字节流可以传输任意的文件数据。

(二)java.io.OutputStream


字节输出流接口,用于输出字节数据至目的地,通常使用其实现类FileOutputStream对文件进行写操作。

public FileOutputStream(File file,boolean b)构造方法1
public FileOutputStream(String name,boolean b)构造方法2
public void close() 关闭输出流
public void flush() 刷新输出流
public void write(byte[] b) 将字节数组输出
public void write(byte[] b, int off, int len) 将字节数组按起始位置及长度输出
public abstract void write(int b) 将整型输出

当创建一个输出流时,必须赋予文件路径(如果有这个文件,会清空当前数据,末尾boolean参数调整是否续写),通常使用“/r/n”表示Windoes输出换行。

(三)java.io.InputStream


字节输入流接口,用于从目标文件读入字节数据至内存,通常使用其实现类FileInputStream对文件进行读操作。

FileInputStream(File file)
FileInputStream(String name)
public int read()从输入流读取一个字节
public int read(byte[] bytes)从输入流读取数据至字节数组
当读取至文件末尾时,会返回“-1

三、字符流

(一)概念


当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。

(二)java.io.Writer


字符输出流接口,用于输出字节数据至目的地,通常使用其实现类FileWriter对文件进行写操作。

void write(int c) 写出单个字符
void write(char[] cbuf) 从字符数组写出数据至文件
abstract void write(char[] cbuf, int off, int len)从字符数组写出数据至文件,偏移量,长度
void write(String str)写出字符串
void write(String str, int off, int len) 从字符串写出数据至文件,偏移量,长度
void flush()刷新缓冲区
void close() 关闭输出流

字符输出流必须刷新缓冲区或关闭后,才会输出内容至文件。

(三)java.io.Reader


字符输入流接口,用于从目标文件读入字节数据至内存(以字符为单位),通常使用其实现类FileReader对文件进行读操作。
Windows默认字符集:GBK,idea默认字符集:UTF-8

public void close() 关闭输入流
public int read()从输入流读取一个字符
public int read(char[] cbuf)从输入流读取数据至字符数组

四、属性集

java.util.Properties,表示一个系统的属性集,元素是键值对,可以通过System.getProperties()方法返回系统内置的属性集。

(一)常用方法


public Properties() - 创建属性集
public Object setProperty(String key, String value) - 设置属性集
public String getProperty(String key) - 根据key获取value
public Set<String> stringPropertyNames()  - 获取key的集合

(二)特殊方法


public void load(InputStream inputstream)从输入流读取属性集
可以通过“ ”、“:”、“=”进行分隔。

发布了31 篇原创文章 · 获赞 0 · 访问量 798

猜你喜欢

转载自blog.csdn.net/u010761121/article/details/103810873
今日推荐