System类中有;两个静态的成员变量
只负责输出数据,不负责读数据
PrintStream
使用继承父类的write写数据,查看时会自动转码,使用特有方法(print和println)则不会
PrintWriter
方法名 | 说明 |
---|---|
PrintWriter(String fileName) | 使用指定的文件名创建一个新的PrintWriter,而不会自动执行刷新 |
PrintWriter(Writer out, boolean autoFlush) | 创建一个新的PrintWriter out:字符输出流 autoFlush:一个布尔值,为真则print、println或format方法将自动刷新缓冲区 |
public class PrintStreamDemo {
public static void main(String[] args) throws IOException {
/*
BufferedReader br=new BufferedReader(new FileReader("test.java"));
BufferedWriter bw=new BufferedWriter(new FileWriter("copy05.java"));
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
*/
//打印流只能写不能读
BufferedReader br=new BufferedReader(new FileReader("test.java"));
PrintWriter pw=new PrintWriter(new FileWriter("copy06.java"),true);
String line;
while((line=br.readLine())!=null){
pw.println(line);
}
br.close();
pw.close();
}
}
对象序列化:指的是将对象保存到磁盘中,或者在网络中传输对象。这种机制就是使用一个字节序列表示一个对象,该字节序列包括:对象的类型、对象的数据和对象中存储的属性等信息字节序列写到文件后,相当于在文件中持久保存一个对象的信息。
该字节序列还可以从文件中读取回来,重构对象,进行反序列化
ObjectOutputStream
将Java对象的原始数据类型和图形写入OutputStream。可以使用ObjectInputStream读取(重构)对象。可以通过使用流的文件来实现对象的持久存储。如果流是网络套接字流,则可以在另一个主机或者进程中重构对象
构造方法
ObjectOutputStream(Outputstream out):创建一个写入指定的OutputStream的ObjectOutputStream
序列化对象的方法
void writeObject(Object obj):将指定的对象写入ObjectOutputStream
对象序列化
public class ObjectOutputStreamDemo {
public static void main(String[] args) throws IOException{
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("src\\com\\itheima02\\oos.txt"));
//创建对象
Student s=new Student("杨天伦",24);
/*
需要实现Serializable接口不然无法序列化和反序列化
标识接口不需要重写方法
*/
//写入文件
oos.writeObject(s);
oos.close();
}
}
注意!!!
ObjectInputStream
ObjectInputStream反序列化先前使用ObjectOutputStream编写的原始数居和对象
构造方法
ObjectInputStream(InputStream in):创建从指定的InputStream读取的ObjectlnputStream
反序列化方法
Object readObject(): 从ObjectlnputStream读取一个对象
public class ObjectInputStreamDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src\\com\\itheima02\\oos.txt"));
Object obj = ois.readObject();
Student s = (Student) obj;
System.out.println(s.getName()+","+s.getAge());
ois.close();
}
}
public class PropertiesDemo {
public static void main(String[] args){
Properties prop=new Properties();
prop.put("001","杨天伦");//没泛型,默认是Object类型的
prop.put("002","李昊");
prop.put("003","朱长坤");
Set<Object> keySet=prop.keySet();
for (Object key:keySet) {
Object value = prop.get(key);
System.out.println(key+","+value);
}
}
}
方法名 | 说明 |
---|---|
Object setProperty(String key,String value) | 设置集合的键和值,都是String类型,底层调用Hashtable方法put |
String getPorperty(String key) | 使用此属性列表中的指定的键搜索属性 |
Set stringPorpertyNames() | 从该属性列表返回一个不可修改的键集,其中键及其对应的值都是字符串 |
public class PropertiesDemo {
public static void main(String[] args){
Properties prop=new Properties();
prop.setProperty("001","杨天伦");
prop.setProperty("002","李昊");
prop.setProperty("003","朱长坤");
System.out.println(prop.getProperty("0011"));
System.out.println(prop);
Set<String> names=prop.stringPropertyNames();
System.out.println(names);
for (String key:names) {
System.out.println(prop.getProperty(key));
}
}
}
方法名 | 说明 |
---|---|
void load(InputStream inStream) | 从输入字节流读取属性列表(键和元素对) |
void load(Reader reader) | 从输入字符流读取属性列表(键和元素对) |
void store(OutputStream out, String comments) | 将此属性列表(键和元素对)写入此Properties表中,以适合于使用load(lnputStream)方法的格式写入输出字节流 |
void store(Writer writer,String comments) | 将此属性列表(键和元素对)写入此 Properties表中,以适:使用load(Reader)方法的格式写入输出字符流 |
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
myStore();
myLoad();
}
private static void myLoad() throws IOException {
Properties prop=new Properties();
FileReader fr=new FileReader("src\\com\\itheima02\\fw.txt");
prop.load(fr);
fr.close();
System.out.println(prop);
}
public static void myStore() throws IOException {
Properties prop=new Properties();
prop.setProperty("001","杨天伦");
prop.setProperty("002","李昊");
prop.setProperty("003","朱长坤");
FileWriter fw=new FileWriter("src\\com\\itheima02\\fw.txt");
prop.store(fw,null);
fw.close();
}
}