其他流的使用
??
輸入輸出流
數據流:
/*數據流DataInputStream和DataOutputStream作用:用于基本數據類型遍歷或字符串的讀取和寫入*/@Testpublic void test1() throws IOException { // 寫入操作DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.txt"));dos.writeUTF("張麻子");dos.flush();dos.writeInt(40);dos.flush();dos.writeBoolean(true);dos.flush();dos.close(); // 得到的data.txt文件無法直接讀取}@Test// 將文件中的變量讀入到到內存中public void test2() throws IOException {DataInputStream dis = new DataInputStream(new FileInputStream("data.txt"));// 讀取順序要與寫入文件時的順序一致String name = dis.readUTF();int age = dis.readInt();boolean b = dis.readBoolean();System.out.println(name+age+b);dis.close();}對象流:
?序列化:寫入文件中
反序列化:從文件在寫入內存中
?
??
package ObjectInputOutputStream;import org.junit.Test;import java.io.*;public class ObjectStreamTest {/*將內存中的java對象保存到磁盤中或通過網絡傳輸出去使用ObjectOutputStream實現*/@Testpublic void test() throws IOException {ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ObjectStream.txt"));oos.writeObject(new String("我愛中國!"));oos.flush();oos.close();}/*反序列化:將磁盤文件(網絡)中的對象還原為內存中的對象使用ObjectInputStream*/@Testpublic void test2() throws IOException, ClassNotFoundException {ObjectInputStream ois = new ObjectInputStream(new FileInputStream("ObjectStream.txt"));Object obj = ois.readObject();System.out.println(obj);ois.close();} }類的序列化有一定的要求:必須實現以下兩個接口之一
?
static,transient的變量無法序列化?
?
若沒有手動加serialVersionUID ,在修改對象后,JVM的UID會相應的改變導致無法反序列化?
總結
- 上一篇: String类与其他数据类型得转换
- 下一篇: php7 libiconv,CentOS