서열화 반서열화 흐름속성 컬렉션 클래스소기
역정렬은 입출력 흐름에서 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
속성 컬렉션 클래스: Properties는 자체적으로 요소를 반복하고 추가하는 기능이 있습니다*속성 목록에 요소를 추가합니다.* public Object setProperty(String key, String value)* public Set
stringProperty 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
속성 컬렉션 클래스: 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.