转换流
将字节输出流变为字符输出流 OutputStream --> write OutputStreamWrite
将字节输入流变为字符输入流 InputStream --> write InputStreamWrite
字符编码 GNK/GB2312 简体
ISO 8859-1 国际通用码
UNICODE
uft-8 推荐
getProperties 获取所有编码信息
打印流 PrintStream
自己定义一个流 自己写的一个输出 可以输出多种类型
printf 格式化输出
PrintWrite 字符打印流
System类
系统输出System.out gettypes任何String都回转成数组类型
系统输入System.in 不会受到数组限制
缓冲区操作BufferedReader
从字符输入流中读取文本并缓冲字符 以便有效的读取字符 数组和行
readLine 返回一个文本行String类型
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));//读取键盘输入流
System.out.println("输入信息");
String str = buf.readLine();
System.out.println(str);
Scanner 输入工具类util final 不能被继承
hasNextXxx 判断是否有数据
nextXxx取得数据
useDelimiter 修改分隔符
读取文件
File file = new File("E:"+File.separator+"myio"+File.separator+"demo.txt");
Scanner sc = new Scanner(new FileInputStream(file));
sc.useDelimiter("\n");
while (sc.hasNext()) {
System.out.println(sc.next());
}
对象序列化
可以在内存中保存的对象数据 进行二进制操作
要实现Serializable接口
//序列化操作
Person per = new Person("zhangsan",23);
File file = new File("E:"+File.separator+"myio"+File.separator+"person.ser");//ser二进制形式
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(per);
oos.close();
反序列化 ObjectOutputStream ObjectInputStream
//反序列化操作
File file = new File("E:"+File.separator+"myio"+File.separator+"person.ser");//ser二进制形式
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
Person son = (Person) ois.readObject();
System.out.println(son);
ois.close();
transient关键字
如果希望属性不被保存
private transient String name;//不能被序列化
private int age;//可以被序列化