Java I/O
2021-10-14 14:36:37 17 举报
AI智能生成
登录查看完整内容
Java I/O
作者其他创作
大纲/内容
FileOutputStream类
FileInputStream类
字节流
FileOutputStream(File file)
FileOutputStream(String name)
FileInputStream(File file)
FileInputStream(String name)
构造方法
void close()关闭此输出/输入流并释放与此流相关联的任何系统资源
void flush()刷新此输出流并强制任何缓冲的输出字节被写出
void write(int b)将指定的字节输出流
void write(byte[] b)将 b.length字节从指定的字节数组写入此输出流可以在参数里传入字符串,调用getBytes()方法得到一个bytes数组
输出
int read()从输入流读取数据的下一个字节
int read(byte[] b)从输入流中读取一些字节数,并将它们存储到字节数组 b中
输入
成员方法
概要
FileWriter类
FileReader类
字符流
FileWriter(File file)
FileWriter(String fileName)
FileReader(File file)
FileReader(String name)
void close()关闭此输出/输入流并释放与此流相关联的任何系统资源该方法会先调用flush方法刷新缓冲的字符被写出
void flush()刷新此输出流并强制任何缓冲的输出字符被写出
void write(char c)将指定的字符输出流
void write(char[] c)将 b.length字节从指定的字符数组写入此输出流
void write(String str) 写入字符串
int read()从输入流读取数据的下一个字符
int read(char[] c)从输入流中读取一些字符数,并将它们存储到字符数组 c中
模板 // 定义变量,作为有效个数 int len ; // 定义字节数组,作为装字节数据的容器(字符数组同理) byte[] b = new byte[1024]; //font color=\"#ff9800\
字节/字符流都可以通过传递一个字节/字符数组创建缓冲区读取每次读取多个字节,减少了系统间的IO操作次数从而提高读写的效率
按处理的数据单位不同
输入流
输出流
按数据流方向不同
节点流
BufferedInputStream类
BufferedOutputStream类
字节缓冲流
BufferedInputStream(InputStream in)参数传递一个字节流输入对象
BufferedOutputStream(OutputStream in)参数传递一个字节流输出对象
BufferedOutputStream(new FileInputStream(String name)BufferedOutputStream(new FileInputStream(String name)
因为返回值是String 所以判断是否为null,不是-1while((line=br.readLine())!=null)
特有方法String readLine()读一行文字
BufferedReader类
BufferedWriter类
字符缓冲流
BufferedReader(Reader in)创建一个 新的缓冲输入流参数传递一个字符流输入对象
BufferedWriter(Writer out)创建一个新的缓冲输出流参数传递一个字符流输出对象
BufferedReader(new FileReader(String name)BufferedWriter(new FileWriter(String name)
缓冲流
转换流是字节与字符间的桥梁
InputStreamReader类
OutputStreamWriter类
转换流
OutputStreamWriter(OutputStream in)创建一个使用默认字符集的字符流参数传递一个字符流输出对象
InputStreamReader(InputStream in)创建一个使用默认字符集的字符流
InputStreamReader(InputStream in,String charsetName)创建一个指定字符集的字符流
GBK字符集
GBK编码(系统默认)
ASCII字符集
ASCII编码
UTF-8编码(IDEA默认)
UTF-16
UTF-32
字符编码
Unicode字符集
Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息 反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象
概念:对象序列化/反序列化
ObjectOutputStream类
ObjectInputStream类
对象流
ObjectOutputStream(OutputStream out)创建一个指定OutputStream的ObjectOutputStream
ObjectInputStream(InputStream in)创建一个指定InputStream的ObjectInputStream
一个对象序列化的条件:1、该类必须实现java.io.Serializable 接口,Serializable是一个标记接口,不实现此接口的类将不会使任何状态序列化或反序列化,会抛出NotSerializableException2、该类的所有属性必须是可序列化的如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用transient关键字修饰static属性也不可被序列化,因为static属性不属于对象,序列化保存的是对象的状态
final void writeObject (Object obj)将指定的对象写出
序列化操作及特有方法
final Object readObject ()读取一个对象 该方法有两个异常,一个IO,一个ClassNotFound
对于JVM可以反序列化对象,它必须是能够找到class文件的类如果找不到该类的class文件,则抛出一个 ClassNotFoundException异常
发生异常的原因:* 该类的序列版本号与从流中读取的类描述符的版本号不匹配 * 该类包含未知数据类型 * 该类没有可访问的无参数构造方法
当JVM反序列化对象时,能找到class文件但是class文件在序列化对象之后发生了修改那么反序列化操作也会失败,抛出一个InvalidClassException异常
反序列化操作及特有方法
PrintStream(String fileName)使用指定的文件名创建一个新的打印流
PrintStream(OutputStream out)使用指定的字节输出流创建一个新的打印流
PrintStream(File file)使用指定的文件对象创建一个新的打印流
void print(任意类型的值)
void println()
static void setOut(printStream out)改变打印流流向
特有方法
printStream类
打印流
数据流
处理流
按功能不同
字节输出流OutputStream
字节输入流InputStream
字符输出流Writer
字符输入流Reader
都继承于四种抽象流类型
java.util.Properties 继承于Hashtable,来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时,System.getProperties方法就是返回一个Properties对象。
public Properties():创建一个空的属性列表
String getProperty(String key) :使用此属性列表中指定的键搜索属性值
Set<String> stringPropertyNames() :所有键的名称的集合
基本存储方法
void load(InputStream inStream): 从字节输入流中读取键值对
与流相关的方法
属性集
Java IO
0 条评论
回复 删除
下一页