java-标准输入输出流

标准输入输出流

//标准输入流(字节流,不能输出中文)
InputStream is=System.in;
int by;
while((by=is.read())!=-1){
	sout(by);
}
//转换流(可以输入中文,不能一行)
InputStreamReader isr=new InputStreamReader(is);
//使用字符流读取一行的数据。(可以一行)
BufferedReader br=new BufferedReader(isr);
String line=br.readLine();
int i=Integer.parseInt(br.readLine());//将输入的字符串转换为整数(在键盘输入数字系统会将数字默认为字符串,所以要转换为数字)

//自己实现键盘录入数据太麻烦,所以Java提供了一个类供我们使用
Scanner sc=new Scanner(System.in);


------------------------------------------------------------
//标准输出流
PrintStream ps=System.out;
ps.println("hello");
ps.println(100);

//综合起来,System.out的本质是一个字节输出流
System.out.println();//可以不带参数
System.out.print("fe");//必须带参数

字节打印流

只负责输出数据,不负责读取数据。
使用弗雷的方法写数据,查看的时候会转码,使用自己的特有方法写数据,查看的数据原样输出。

PrintStream ps=new PrintStream("mydir\\ps.txt");
ps.write(97);
//使用特有方法写数据
ps.print(98);
ps.println();

字符打印流

//不会自动flush
PrintWriter pw=new PrintWriter("mydir\\java.txt");
pw.write("hello");//要刷新
pw.flush();
pw.write("\r\n");//换行

pw.println("hello");
pw.flush();

//自动flush
PrintWriter pw=new PrintWriter("mydir\\java.txt",true);
pw.write("hello");//要刷新
pw.write("\r\n");//换行

对象的序列化和反序列化

序列化将类序列化用于存储或者传输
被序列化的类必须实现serializable接口

//读数据
ObjectInputStream ois=new ObjectInputStream(new FillInputStream("mydir\\java.txt"));
Object obj=ois.readObject();
Student s=(Student)obj;
sout(s.getName()+s.getAge());

//写数据
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("mydir\\java.txt");
Student s=new Student();
oos.write(s);

如果类被修改,会抛出异常。解决方案
类中加入:private static final long serializableUID=42L;(该值描述必须为static final long)。
该值会记录被序列化时类中的细节,如果类中修改了值,则该值记录的类中的细节会反序列时显示修改前的类。

如果某个值不参加序列化,加入transient修饰符
private transient int age;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值