java 输入输出流(文件操作)及序列化

xiaoxiao2021-02-28  154

java实训的第四天就学到了流的各种操作和类的序列化反序列化,对于没认真学过的人进度有些快。好了废话不多说了。

流按处理数据类型不同划分为字符流,字节流。二者应用方面很容易区分,前者处理文本文件,后者处理各种文件。 举一个例子:

import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import org.junit.Test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; public class Findfile { @Test public static void main(String[] args) throws IOException { new Findfile().saveFile("/Users/tangweize/Desktop/c.txt", "abcdefg"); } public void saveFile(String fileName,String content) throws IOException { File file =new File(fileName);//访问该文件 if(!file.exists()) { System.out.println("不存在"); System.out.println(file.createNewFile());//创建新的文件 } FileOutputStream fos = new FileOutputStream(file,true);//创建一个向具有指定name的文件中并在末尾写入数据的输出文件流。如果第二个参数为true,则将字节写入文件末尾处,而不是写入文件开始处 OutputStreamWriter out =new OutputStreamWriter(fos,"utf-8"); //重写一个字节输出流,用“utf-8”格式写入 BufferedWriter bw = new BufferedWriter(out);//创建out的缓冲流 bw.write(content); bw.write("\r\n"); bw.flush(); System.out.println("写入成功!"); } } import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.Serializable; import java.nio.file.attribute.FileTime; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import org.junit.Test; class Stu implements Serializable{ private String name; private int age; private char sex; public Stu(String n,int a,char s){ this.name = n; this.age = a; this.sex = s; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public String toString() { return "Name:" + name + "/nAge:" + age + "/nSex:" + sex; } } public class Demo{ public static void main(String[] args) throws IOException { Stu s1 = new Stu("裸宇",25,'W'); Stu s2 = new Stu("海河南",22,'W'); Demo.serializable(s1);//序列化 Demo.inserializable();// 反序列化 } public static void serializable(Stu c) throws IOException { File file = new File("/Users/tangweize/Desktop/d.txt"); if(!file.exists()) { System.out.print("不存在"); file.createNewFile(); } FileOutputStream filename = new FileOutputStream(file, true); ObjectOutputStream obo = new ObjectOutputStream(filename); obo.writeObject(c); obo.close(); filename.close(); } public static void inserializable() throws IOException { File file = new File("/Users/tangweize/Desktop/d.txt"); FileInputStream input = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(input); try { Stu s = (Stu) ois.readObject(); System.out.println(s.getName() + "age is " + s.getAge()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } ois.close(); } }
转载请注明原文地址: https://www.6miu.com/read-62458.html

最新回复(0)