java基础进阶-06-IO流_特殊流

IO流

IO流

标准输出输入流

  • System
    • System.in
    • System.out
标准输入流
//键盘输入
//字节流
InputStream is = System.in;
int by;
while((by=is.read())!=-1){
    System.out.println((char)by);
}
//字节流转字符流
//InputStream is = System.in;
//InputStreamReader isr = new InputStreamReader(is);
//是字符流一次读取一行数据
//BufferedReader br = new BufferedReader(isr);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个字符串");
String line = br.readLine();
System.out.prinln(line):
br.close();
//自己实现键盘数据太麻烦
Scanner sc = new Scanner(System.in);
标准输出流
PrintStream ps = System.out
ps.print("hello");
ps.println("world");

打印流

  • PrintStream
    • 字节打印流
  • PrintWriter
    • 字符打印流
字节打印流
PrintSrtream ps = new PrintStream("xx\\ps.txt");
//写数据
//字节输出流方法
ps.write(97);
//特有方法
ps.println(97);
ps.print(98);
//释放资源
ps.close();
字符打印流
  • printWriter(String fileName)
  • PrintWriter(Writer out,boolean autoFlush)
PrintWriter pw = new PrintWriter("xx\\pw.txt");
pw.writer("hello");
pw.writer("\r\n");
//需要刷新
pw.flush();
pw.println("hello");
pw.flush();
//自动刷新
PrintWriter pw = new PrintWriter(new FileWriter("xx\\pw.txt"),true);
pw.println("hello");
读写java文件
//原方法
BufferedReader br = new BufferedReader(new FileReader("br.java"));
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.java"));

String line;
while((line=br.readLine())!=null){
    bw.write(line);
    bw.newLine();
    bw.flush();
}
bw.close();
br.close();
//改进
BufferedReader br = new BufferedReader(new FileReader("br.java"));
PrintWriter pw = new PrintWriter(new FileWriter("pw.java"),true);

String line;
while((line=br.readLine())!=null){
    pw.println(line);
}
pw.close();
br.close();

对象序列号流

  • ObjectOutputStream
    • 对象序列化流
  • ObjectInputStream
    • 对象反序列化流
对象序列化流
//需要序列号的类必须实现Serializable接口
public class Student implements Serializable{
    private String name;
    private int age;
    
    public Student(){
        
    }
    
    public Student(String name,int age){
        this.age = age;
        this.name = name;
    }
    
    //set get
    
    public String toString(){
        return "Student:name="+this.name+",age="+this.age;
    }
}
ObjectOutputStream oos = new ObjectOutputStream("oos.txt");
//创建对象
Student s = new Student("xx",30);
oos.writeObject(s);
oos.close();
对象反序列化流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("oos.txt"));
Object obj = ois.readObject();
Student s = (Student)obbj;
System.out.println(s);
ois.close();
serialVersionUID
  • 序列化ID
    • 修改了的类会改变序列化ID
    • 显示定义可以保持序列化ID不变
      • private static final long serialVersionUID
public class Student implements Serializable{
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;
    
    public Student(){
        
    }
    
    public Student(String name,int age){
        this.age = age;
        this.name = name;
    }
    
    //set get
    
    public String toString(){
        return "Student:name="+this.name+",age="+this.age;
    }
}
transient
  • transient
    • 修饰不需要序列化的成员变量
public class Student implements Serializable{
    private static final long serialVersionUID = 1L;
    private String name;
    private transient int age;
    
    public Student(){
        
    }
    
    public Student(String name,int age){
        this.age = age;
        this.name = name;
    }
    
    //set get
    
    public String toString(){
        return "Student:name="+this.name+",age="+this.age;
    }
}

Properties

  • Properties
    • Map集合类
    • 可以保存到流中或从流中加载
Properties prop = new Properies();
prop.put("name1","xx1");
prop.put("name2","xx2");
prop.put("name3","xx3");
Set<Object> keySet = prop.keySet();
for(Object key : keySet){
   Object value = prop.get(key);
   System.out.println(key+" "+value);
}
  • Properties
    • setProperty(String key,String value)
    • getProperty(String key)
    • stringPropertyNames()
Properties prop = new Properies();
prop.setProperty("name1","xx1");
prop.setProperty("name2","xx2");
prop.setProperty("name3","xx3");

//System.out.println(prop.getProperty("name1"));
//System.out.println(prop.getProperty("name2"));
//System.out.println(prop.getProperty("name3"));

Set<String> names = prop.stringPropertyNames();
for(Object key : names){
   Object value = prop.getProperty(key);
   System.out.println(key+" "+value);
}
  • Properties
    • IO流结合
      • load(InputStream inStream)
      • load(Reader reader)
      • store(OutputStream out,String comments)
        • comments:描述信息
      • store(Writer writer,String comments)
        • comments:描述信息
Properties prop = new Properies();
prop.setProperty("name1","xx1");
prop.setProperty("name2","xx2");
prop.setProperty("name3","xx3");
FileWriter fw = new FileWriter("fw.txt");
prop.store(fw,null);
fw.close();
Properties prop = new Properies();
FileReader fr = new FileReader("fw.txt'");
prop.load(fr);
fr.close();
System.out.println(prop);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值