输入输出流
一、标准输入输出流
public static final InputStream in:标准输入流。通常该流对应于键盘输入 public static final PrintStream out:标准输出流。通常该流对应于显示输出
二、标准输入流举例
例子1:使用字节流获取键盘输入并输出,不足:无法读取中文字符,因为一个中文字符对应多个字节,使用字节流读取会出现乱码
InputStream in = System . in;
int ascii = in. read ( ) ;
System . out. println ( ascii) ;
System . out. println ( ( char ) ascii) ;
例子2:使用字符流获取键盘输入的中文,不足:无法读取多个中文字符
InputStreamReader in = new InputStreamReader ( System . in) ;
int ascii = in. read ( ) ;
System . out. println ( ( char ) ascii) ;
例子3:使用字符流读取字符串到数组里,缺点:超过字符数组长度就无法读取了
InputStreamReader in = new InputStreamReader ( System . in) ;
char [ ] buf = new char [ 10 ] ;
in. read ( buf) ;
System . out. println ( buf) ;
例子4:使用字符缓冲流一次性读取字符串
BufferedReader buf = new BufferedReader ( new InputStreamReader ( System . in) ) ;
String s = buf. readLine ( ) ;
System . out. println ( s) ;
三、java自带的输出流——Scanner
创建:Scanner s = new Scanner(System.in); next()读取方法:遇到空格就结束 nextline():遇到字符串末尾才结束 举例
Scanner s = new Scanner ( System . in) ;
String s1 = s. nextLine ( ) ;
System . out. println ( s1) ;
四、标准输出流犯方法
void print(int i):这里不是ASCII,直接输出数字 void print(char c) void print(char[] cbuf) void print(string s)
PrintStream out = System . out;
out. println ( 10 ) ;
out. println ( 'a' ) ;
out. println ( "请问" ) ;
char [ ] buf = { '啊' , '呀' } ;
out. print ( buf) ;
五、直接使用out
System . out. println ( "请问" ) ;
序列化流
一、介绍
使用一个字节序列表示一个对象,该字节序列包含:对象的类型、对象的数据和对象中存储的属性等信息,字节序列写到文件之后,相当于文件中持久保存了一个对象的信息,反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化 对象序列化流: ObjectOutputStream 对象反序列化流: ObjectInputStream
二、ObjectOutputStream
构造方法:ObjectOutputStream(OutputStream out) 序列化方法:void writeObject(Object obj):将一个对象写入到OutputStream中 注意:一个对象要想被序列化,该对象所属的类必须必须实现Serializable接口,Serializable是一个标记接口,实现该接口,不需要重写任何方法 需要在类中定义一个private static final long serialVersionUID值,以便修改类后还能正确反序列化 对于不想被序列化的成员变量,需要添加关键字transient,且transient只能作用于成员变量,不能修饰方法 举例:
public class Test implements Serializable {
private static final long serialVersionUID= 1 ;
public int id= 1 ;
public String name = "啊啊啊" ;
public transient int height = 98 ;
}
ObjectOutputStream oos = new ObjectOutputStream ( new FileOutputStream ( "C:\\java\\1.txt" ) ) ;
Test t1 = new Test ( ) ;
oos. writeObject ( t1) ;
oos. close ( ) ;
三、ObjectInputStream
构造方法:ObjectInputStream(InputStream in) 反序列化对象的方法:Object readObject():从InputStream中读取对象 举例
ObjectInputStream ois = new ObjectInputStream ( new FileInputStream ( "C:\\java\\1.txt" ) ) ;
Object o = ois. readObject ( ) ;
Test t = ( Test ) o;
System . out. println ( t) ;
ois. close ( ) ;