文件操作和序列化

Posted wangzhaofang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作和序列化相关的知识,希望对你有一定的参考价值。

编码:

(1)utf-8编码中文占用3个字节,英文占用一个字节。

(2)gbk编码中文占用2个字节,英文占用1个字节。

(3)java是双字节编码utf-16be,中文占用2个字节,英文占用2个字节。

 

序列化:
序列化就是将Object转换成byte序列,反之叫对象的反序列化。序列化流(ObjectOutputStream)--writeObject,反序列化流(ObjectInputStream)--readObject

对象必须实现序列化接口(Serializable),才能进行序列化,否则将出现异常。这个接口没有任何方法,只是一个标准。

 

序列化对象的代码模板:

//序列化对象

OutputStream os = new FileOutputStream("C:\\Users\\User\\Desktop\\论文\\wzf.txt");
ObjectOutputStream oos = new ObjectOutputStream(os);
Student stu = new Student("wzf",26);
oos.writeObject(stu);
oos.flush();
oos.close();
os.close();

//反序列化对象
InputStream is = new FileInputStream("C:\\Users\\User\\Desktop\\论文\\wzf.txt");
ObjectInputStream ois = new ObjectInputStream(is);
Student stu2 = (Student)ois.readObject();
System.out.println(stu2);
ois.close();
is.close();

读写文件的代码模板:

InputStream is = new FileInputStream("C:\\Users\\User\\Desktop\\论文\\坐标文件\\Car19_utf.txt");
OutputStream os = new FileOutputStream("C:\\Users\\User\\Desktop\\论文\\坐标文件\\wzf.txt");
InputStreamReader isr = new InputStreamReader(is,"utf-8");
OutputStreamWriter osw = new OutputStreamWriter(os,"gbk");
BufferedReader br = new BufferedReader(isr);
BufferedWriter bw = new BufferedWriter(osw);
String str;
while((str = br.readLine()) != null){
  //osw.write(str+"\r\n");
  bw.write(str);
  bw.newLine();
  osw.flush();
}
bw.close();
br.close();
osw.close();
isr.close();
os.close();
is.close();

 

以上是关于文件操作和序列化的主要内容,如果未能解决你的问题,请参考以下文章

Python之IO编程——文件读写StringIO/BytesIO操作文件和目录序列化

Go基础之文件操作命令行参数序列化并发编程

Go基础之文件操作命令行参数序列化并发编程

Go基础之文件操作命令行参数序列化并发编程

文件操作和序列化

pickle.dump()和pickle.load()进行文件操作