서열화 반서열화 흐름속성 컬렉션 클래스소기

16102 단어
서열화는 자바 대상을 IO 흐름에 기록하여 2진 흐름을 형성하여 간접적으로 대상을 디스크에 저장하거나 네트워크에서 직접 전송할 수 있도록 하는 것이다. (네트워크에서 전송되는 클래스는 서열화되어야 한다)
역정렬은 입출력 흐름에서 Java 객체를 복원합니다.
서열화 흐름: 대상을 흐르는 방식이나 네트워크로 전송하는 데이터로 데이터를 씁니다.객체 -> 스트리밍 데이터: Object OutputStream * 역서열화: 스트리밍 데이터나 네트워크 전송 중의 스트리밍 데이터를 읽습니다.스트리밍 데이터 - -> 객체로 복원: ObjectInputStream * ObjectOutputStream의 구성원 방법: * public final void writeObject(Object object): object 객체를 현재 시리얼화된 흐름에 쓰기 * ObjectInputStream의 구성원 방법: * public final Object readObject(): 현재 반시리얼화된 흐름에서 객체 읽기
주: 먼저 서열화하고 반서열화하려면 뒤집어서는 안 됩니다. 그렇지 않으면 오류가 발생합니다. (java.io.Stream Corrupted Exception: invalid stream header: CEAAC8CB)
package Day19_System;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import Day19_DataInOutput.Star;

/**
 * @author Aoman_Hao
 */
public class ObjectWriterTest {

    public static void main(String[] args) throws IOException,
            FileNotFoundException, ClassNotFoundException {


        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream("d:\\Java\\JavaTest\\Aoman_Hao.txt"));

        Star s1 = new Star("   ", 23);
        oos.writeObject(s1);
        System.out.println(oos);
        oos.close();


        //     
                FileInputStream fis = new FileInputStream(
                        "d:\\Java\\JavaTest\\Aoman_Hao.txt");
        //
        ObjectInputStream ois = new ObjectInputStream(fis);
        //     ,       ,   ---->     
        //  Object readObject = ois.readObject();  //  object 
        Star readobject  = (Star)ois.readObject();  //   Star 
        ois.close();
        System.out.println(readObject);

    }

}
  :
java.io.ObjectOutputStream@273d6d53
Star [name=   , age=23]

 :  Star           Serializable
implements Serializable,     (NotSerializableException(            )    )


서열화와 반서열화 버전 번호가 일치하지 않으면 InvalidClassException**이 이 이상을 해결하는 두 가지 방안이 나타납니다: * 1) 현재 클래스의 데이터를 변경한 후에 다시 서열화와 반서열화*이런 방법은 실제 요구에 부합되지 않습니다. 실제 개발에서 데이터를 직접 읽을 수 있습니다. 흐르는 데이터를 > 대상으로 복원합니다* 2) 노란색 경고선을 발견하고 클릭하십시오. 고정 ID를 생성합니다.
서열화 및 반서열화 시험점: * 1) 대상-> 흐르는 데이터 또는 흐르는 데이터-> 대상, 이 대상이 있는 클래스는 표기 인터페이스를 실현해야 한다:serializable 다중 루틴에는 키워드가 하나 있다. 동기화 메커니즘(synchronized)*2) 서열화와 반서열화 생산된 버전 Id가 일치하지 않을 때 이상이 발생하기 때문에 생산 랜덤 ID나 고정 ID로 해결*3)transient: 수식된 변수는 서열화되지 않는다...
참고: Java 객체를 구조자를 통해 초기화할 필요가 없습니다.여러 Java 객체에 대해 시리얼화된 메커니즘을 사용하고, 반시리얼화된 메커니즘을 사용하여 객체를 복원하려면 실제 쓰기 순서에 따라 읽어야 합니다.
Properties: 속성 집합 클래스, 이 클래스는 Hashtable에서 계승되며, 이 클래스는 맵 집합 * Properties 클래스에 속하며, 지속적인 속성 집합을 나타냅니다. *Properties는 스트림에 저장하거나 스트림에서 로드할 수 있습니다.속성 목록의 모든 키와 대응하는 값은 문자열입니다 (일반적인 경우: 설정 파일로 사용되고 MySQL 또는 Oracle에서 설정 파일로 사용됩니다) * 구조 방법: * public Properties (): 빈 속성 목록을 만듭니다
package Day19_properies;

import java.util.Properties;
import java.util.Set;

/**
 * @author Aoman_Hao
 */
public class PropertiesTest {

    public static void main(String[] args) {
        //  properties      
        Properties po = new Properties();

        po.put(1, 2);
        po.put(2, "abs");
        po.put(3, "   ");

        //  
        Set po_keyset = po.keySet();
        for(Object key : po_keyset){
                System.out.println(key+"\t"+po.get(key));
            }

    }

}

속성 컬렉션 클래스: Properties는 자체적으로 요소를 반복하고 추가하는 기능이 있습니다*속성 목록에 요소를 추가합니다.* public Object setProperty(String key, String value)* public SetstringProperty Names(): 현재 속성 목록에 있는 모든 키의 컬렉션을 가져옵니다. 키 값은 String 형식*public String getProperty(String key)가 지정한 키로 이 속성 목록에서 속성 값을 검색합니다.
package Day19_properies;

import java.util.Properties;
import java.util.Set;

/**
 * @author Aoman_Hao
 */
public class PropertiesTest {

    public static void main(String[] args) {
        //  properties      
        Properties po = new Properties();

        po.put(1, 2);
        po.put(2, "abs");
        po.put(3, "   ");

        //  
        Set po_keyset = po.keySet();
        for(Object key : po_keyset){
                System.out.println(key+"\t"+po.get(key));
            }

    }

}
  :
3      
2   abs
1   2

속성 컬렉션 클래스: Properties는 자체적으로 요소를 반복하고 추가하는 기능이 있습니다.* 속성 목록에 요소를 추가합니다.* public Object setProperty(String key, String value)(setProperty는 Hashtable 방법put을 호출하고 속성의 키와 값에 문자열을 사용하도록 강요합니다)* public Set string Property Names(): 현재 속성 목록에 있는 모든 키의 컬렉션을 가져옵니다.키 값은 모두 String 유형 * public String getProperty (String key) 에서 지정한 키로 이 속성 목록에서 속성 값을 검색합니다.
주: 이런 종류는 라인이 안전합니다. 여러 라인은 단일properties 대상을 공유할 수 있고 외부 동기화를 할 필요가 없습니다.
package Day19_properies;


import java.util.Properties;
import java.util.Set;


/**
 * @author Aoman_Hao
 */
public class PropertiesTest2 {

    public static void main(String[] args) {
        //      
        Properties po = new Properties();

        //         ,  hashtable put  ,                
        po.setProperty("   ", "23");
        po.setProperty("Aoman", "30");
        po.setProperty("   ", "20");

        //       
        Set spn = po.stringPropertyNames();

        //      append  ,  
        StringBuffer sb = new StringBuffer();
        for (String key : spn) {
            sb.append("  :").append(key).append("\t  :")
                    .append(po.getProperty(key)).append("\r
"
); } System.out.println(sb); } } : :Aoman :30 : :23 : :20 : stringbuffer , string + ,

Properties는 스트림에 저장하거나 스트림에서 로드할 수 있습니다.*파일의 데이터를 속성 집합에 불러오기: public void load(Reader reader)* 속성 집합의 데이터를 파일에 저장: public void store(Writer writer, String comments)* 두 번째 인자: comments: 현재 속성 목록에 대한 설명
package Day19_properies;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import Day19_DataInOutput.Star;

/**
 * @author Aoman_Hao
 */
public class PropertiesTest3 {

    public static void main(String[] args) throws IOException {
        //   ,   

        //store  
        Properties pro = new Properties();

        pro.put("   ","23" );
        pro.put("Aoman","33" );
        pro.put("   ","20" );
        pro.put("Alex","19" );


        //               public void store(Writer writer,String comments)
        FileOutputStream fos = new FileOutputStream("d:\\Java\\Aoman_3.txt");
        pro.store(fos, "    ");
        pro.clone();
        //     :
//      #\u59D3\u540D\u5E74\u9F84
//      #Fri Dec 01 15:19:19 CST 2017
//      Aoman=33
//      \u5218\u8BD7\u8BD7=23
//      Alex=19
//      \u8363\u84C9\u513F=20

        //  
        //       
        Properties pro2 = new Properties();
        //     
        FileInputStream fis = new FileInputStream("d:\\Java\\Aoman_3.txt");
        //  
        pro2.load(fis);
        System.out.println(pro2);
        fis.close();

        //  :
//      {Aoman=33,    =23, Alex=19,    =20}

    }

}

properties 속성 집합load,store로 파일 내용 수정
package Day19_properies;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

/**
 *   Aoman    33 35 
 * @author Aoman_Hao
 */
public class PropertiesTest4 {

    public static void main(String[] args) throws IOException{
        //  properties        
        //      ,   
        Properties pro = new Properties();
        FileInputStream fis = new FileInputStream("d:\\Java\\Aoman_3.txt");

        //     
        pro.load(fis);
        fis.close();

        //  
        Set pro_keyset = pro.keySet();
        for(Object key: pro_keyset){
            if(key.equals("Aoman")){
                //  
                pro.setProperty((String)key, "35");

            }

        //    
            FileWriter fw = new FileWriter("d:\\Java\\Aoman_3.txt");
            //    :#
//          #Fri Dec 01 16:24:20 CST 2017
//          Aoman=35
//             =23
//          Alex=19
//             =20


//          FileOutputStream fw = new FileOutputStream("d:\\Java\\Aoman_3.txt");
//          //    :#
//          #Fri Dec 01 16:21:45 CST 2017
//          Aoman=35
//          \u00C1\u00F5\u00CA\u00AB\u00CA\u00AB=23
//          Alex=19
//          \u00C8\u00D9\u00C8\u00D8\u00B6\u00F9=20

            pro.store(fw, "");


        }


    }

}

 :fileoutputstream      ,         ,         ,    
filewrite      ,       。

좋은 웹페이지 즐겨찾기