[Java]Day9:IO流 字节流 字符流 Properties集合

tech2022-09-13  99

File类

File类 文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以是不存在的,将来是要通过具体的操作把这个路径的内容转换为具体存在的 File类构造方法 方法名说明File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例File(String parent, String child)从父路径名字符串和子路径名字符串创建新的 File实例File(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例 File类创建功能 方法名说明public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件public boolean mkdir()创建由此抽象路径名命名的目录public boolean mkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录 File类删除功能 方法名说明public boolean delete()删除由此抽象路径名表示的文件或目录 File类判断功能 方法名说明public boolean isDirectory()测试此抽象路径名表示的File是否为目录public boolean isFile()测试此抽象路径名表示的File是否为文件public boolean exists()测试此抽象路径名表示的File是否存在 File类获取功能 方法名说明public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串public String getPath()将此抽象路径名转换为路径名字符串public String getName()返回由此抽象路径名表示的文件或目录的名称public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组

字节流

IO流 IO:输入(Input)输出:(Output)流:是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输称为流,本质是数据传输IO流是用来处理设备间数据传输的问题,如:文件复制,上传,下载 IO流分类 按照数据流向 输入流:读取数据输出流:写入数据 按照数据类型 字节流 字节输入流字节输出流 字符流 字符输入流字符输出流 IO流使用场景 操作纯文本文件,优先使用字符流操作图片,视频,音频等二进制文件,优先使用字节流不确定文件类型,使用字节流(万能流)

字节流写数据

字节流抽象基类 InputStream: 这个抽象类是表示字节输入流的所有类的超类OutputStream: 这个抽象类表示字节流输出的所有类的超类子类名特点: 子类名称都是以父类名作为子类名的后缀 字节输出流 FileOutputStream(String name) :创建文件输出流以指定的名称写入文件 使用字节输出流写数据的步骤 创建字符输出流对象(调用系统功能创建文件,创建字节输出流对象,让字节输出流对象指向文件) FileOutputStream fos = new FileOutputStream(文件路径) 调用字节输出流对象的写数据方法 fos.write( );释放资源 fos.close(); 写数据的方法分类 方法名说明void write(int b)将指定的字节写入此文件输出流 一次写一个字节数据void write(byte[] b)将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据void write(byte[] b, int off, int len)将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据 字节流写数据的两个问题 字节流写数据如何换行 windows系统:\r\nlinux系统:\nMac系统:\r 字节流写数据如何实现追加写入 Public FileOutputStream(String name,boolean append)创建文件输出流以指定名称写入文件,如果第二个参数为true,则字节将写入文件的末尾而不是开头 字节流写数据加异常处理 异常处理格式 try-catch-finallyfinally特点 被finally控制语句一定会执行,除非JVM退出

字节流读数据

字节输入流 FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名 字节输入流读取数据步骤 创建字节输入流对象调用字节输入流对象的读数据方法释放资源 字节流读数据 一次读一个字节数组的方法 public int read(byte[]b):从输入流读取最多b.length个字节的数据返回的是读入缓冲区总字节数,也就是实际的读取字节个数 字节流复制文件 创建字节输入流对象创建字节输出流对象读写数据,复制图片释放资源

字节缓冲流

字节缓冲流 IBufferOutputStream: 该类实现缓冲输出流,通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用IBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组,当从流中读取或者跳过字节时,内部缓冲区将根据需要从所含的输入流中重新填充一次很多字节 构造方法 方法名说明BufferedOutputStream(OutputStream out)创建字节缓冲输出流对象BufferedInputStream(InputStream in)创建字节缓冲输入流对象 字节缓冲流复制视频 根据数据源创建字节输入流对象根据目的地创建字节输出流对象读写数据,复制视频释放资源 //字节缓冲流一次读写一个字节数组 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\itcast\\字节流复制图片.avi")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("myByteStream\\字节流复制图片.avi")); byte[] bys = new byte[1024]; int len; while ((len=bis.read(bys))!=-1) { bos.write(bys,0,len); } bos.close(); bis.close(); } //字节缓冲流一次读写一个字节 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\itcast\\字节流复制图片.avi")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("myByteStream\\字节流复制图片.avi")); int by; while ((by=bis.read())!=-1) { bos.write(by); } bos.close(); bis.close(); }

字符流

字符流的介绍

由于字节流操作中文不是特别的方便,所以Java就提供字符流

字符流 = 字节流 + 编码表

字符串中编码解码问题

相关办法 方法名说明byte[] getBytes()使用平台的默认字符集将该 String编码为一系列字节byte[] getBytes(String charsetName)使用指定的字符集将该 String编码为一系列字节String(byte[] bytes)使用平台的默认字符集解码指定的字节数组来创建字符串String(byte[] bytes, String charsetName)通过指定的字符集解码指定的字节数组来创建字符串

字符流写数据

Writer: 用于写入字符流的抽象父类FileWriter: 用于写入字符流常用子类构造方法 方法名说明FileWriter(File file)根据给定的 File 对象构造一个 FileWriter 对象FileWriter(File file, boolean append)根据给定的 File 对象构造一个 FileWriter 对象FileWriter(String fileName)根据给定的文件名构造一个 FileWriter 对象FileWriter(String fileName, boolean append)根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象 成员方法 方法名说明void write(int c)写一个字符void write(char[] cbuf)写入一个字符数组void write(char[] cbuf, int off, int len)写入字符数组的一部分void write(String str)写一个字符串void write(String str, int off, int len)写一个字符串的一部分 刷新和关闭的方法 方法名说明flush()刷新流,之后还可以继续写数据close()关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据

字符流读写数据

Reader:用于读取字符流的抽象父类

FileReader用于读取字符流的常用子类

构造方法

方法名说明FileReader(File file)在给定从中读取数据的 File 的情况下创建一个新 FileReaderFileReader(String fileName)在给定从中读取数据的文件名的情况下创建一个新 FileReader

成员方法

方法名说明int read()一次读一个字符数据int read(char[] cbuf)一次读一个字符数组数据

字符缓冲流

字符缓冲流介绍 BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途BufferedReader:从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途 构造方法 方法名说明BufferedWriter(Writer out)创建字符缓冲输出流对象BufferedReader(Reader in)创建字符缓冲输入流对象 字符缓冲流特有功能 方法介绍

BufferedWriter:

方法名说明void newLine()写一行行分隔符,行分隔符字符串由系统属性定义

BufferedReader:

方法名说明String readLine()读一行文字。 结果包含行的内容的字符串,不包括任何行终止字符如果流的结尾已经到达,则为null

Properties集合

Properties作为Map集合的使用 是一个Map体系的集合类Properties可以保存到流中或从流中加载属性列表中的每个键及其对应的值都是一个字符串 Properties作为Map集合的特有方法 方法名说明Object setProperty(String key, String value)设置集合的键和值,都是String类型,底层调用 Hashtable方法 putString getProperty(String key)使用此属性列表中指定的键搜索属性Set stringPropertyNames()从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串
最新回复(0)