데이터 작동 흐름
IO 패키지에는 두 개의 플랫폼 독립적 인 데이터 작동 스트림이 제공됩니다.
DatainputStream
DataOutputStream
일반적으로 데이터 출력 스트림은 데이터를 특정 형식으로 출력 한 다음 데이터 입력 스트림을 통해 특정 형식으로 데이터를 읽습니다.
DataOutputStream 인터페이스는 다양한 데이터 유형의 데이터를 작성할 수있는 일련의 WriteXXX () 작업을 정의합니다.
예 : 데이터 조작 스트림을 사용하여 데이터를 쓰고 읽습니다
import java.io.dataOutputStream; import java.io.file; import java.io.fileoutputStream; 공개 클래스 DataOutputStreamDemo {public static void main (String Args [])은 예외를 던집니다 {// 모든 예외는 DataOutputStream dos = null; // 데이터 출력 스트림 객체 파일 f = 새 파일 ( "d :" + file.separator + "order.txt"); // 파일의 저장 경로 dos = new DataOutputStream (새 FileOutputStream (f)); // 인스턴스화 데이터 출력 스트림 객체 문자열 이름 [] = { "셔츠", "장갑", "스카프"}; // 제품 이름 플로트 가격 [] = {98.3f, 30.3f, 50.5f}; // 제품 가격 int nums [] = {3,2,1}; // 제품 수량 (int i = 0; i <names.length; i ++) {// loop output dos.writechars (names [i]); // 쓰기 문자열 dos.writechar ( '/t'); // 분리기 쓰기 dos.writefloat (가격 [i]); // price dos.writechar ( '/t') 쓰기; // 쓰기 Delimiter dos.writeInt (nums [i]); // 수량 writity dos.writechar ( '/n'); // newline} dos.close (); // 출력 스트림을 닫습니다}}; import java.io.datainputstream; import java.io.file; import java.io.fileInputStream; public class datainputstreamdemo {public static void main (String args [])은 예외를 던집니다 {// 모든 예외는 datainputstream dis = null; // 데이터 입력 스트림 객체 파일을 선언합니다. f = 새 파일 ( "d :" + file.separator + "order.txt"); // 파일의 저장 경로 dis = new datainputStream (new FileInputStream (f)); // 데이터 입력 스트림 객체 문자열 이름 = null; // 이름 수신 이름 플로트 가격 = 0.0f; // price int num = 0을받습니다. // 수량 수신 char temp [] = null; // 제품 이름 수신 int len = 0; // 읽기 데이터 수를 저장 char c = 0; // '/u0000'try {while (true) {temp = new char [200]; // 오픈 스페이스 len = 0; while ((c = dis.readchar ())! = '/t') {// content temp [len] = c; LEN ++; // 길이 + 1} name = new String (temp, 0, len); // 문자 배열을 문자열로 변경하면 가격 = dis.ReadFloat (); // 가격 Dis.Readchar ()를 읽습니다. // read /t num = dis.readint (); // int dis.readchar ()를 읽습니다. // int dis.readchar ()를 읽습니다. // read/n system.out.printf ( "이름 : %s; 가격 : %5.2f; 수량 : %d/n", 이름, 가격, num); }} catch (예외 e) {} dis.close (); }};객체 직렬화
객체 직렬화는 객체를 이진 데이터 스트림으로 전환하는 방법입니다. 객체 직렬화를 통해 객체의 전송 또는 저장을 쉽게 실현할 수 있습니다.
클래스가 초기화를 지원하려면 클래스는 java.io.serilizable 인터페이스를 구현해야합니다. 인터페이스는 다음과 같이 정의됩니다.
publicinterfaceserilizable {}
이 인터페이스에는 메소드가 없으므로이 클래스는 레이블 인터페이스에 속하며 인터페이스를 구현하는 클래스에 일부 기능이 있음을 나타냅니다.
1. 객체의 직렬화 및 사막화
2. 서식성
직렬화 작업에 Serialversionuid 상수가 도입됩니다. 이 상수는 버전의 일관성을 확인하는 데 사용될 수 있습니다. 사제화 할 때, JVM은 전달 된 바이트 스트림의 SerialversionUid를 로컬 해당 클래스의 직렬 버전과 비교합니다. 동일하게 일관된 것으로 간주되면 사막화 될 수 있습니다. 그렇지 않으면 일관되지 않은 직렬화 버전의 예외가 발생합니다.
java.io.serializable import; 공공 수업 인원은 {개인 문자열 이름을 구현합니다. // 이름 속성을 선언하지만이 속성은 직렬화 된 개인 int 연령이 아닙니다. // 연령 속성을 선언합니다. this.age = age; } publicstring toString () {// toString () 메소드를 덮어 쓰기 "이름 :" + this.name + "; age :" + this.age; }}; 3. 객체 출력 스트림 : ObjectOutputStream
객체가 출력하려면 다음과 같이 정의되는 ObjectOutputStream 클래스를 사용해야합니다.
객체의 속성이 직렬화되기를 원하지 않으면 과도 키워드를 사용하여 선언 할 수 있습니다.
importjava.io.file; importjava.io.fileoutputStream; importjava.io.outputStream; importjava.io.objectoutputStream; publicclass serdemo01 {public static void main (String args []) ThrowSexception {file f = 새 파일 ( "d :" + file.separator + "test.txt"); // 경로 저장을 정의합니다. ObjectOutStream oos = null; // 객체 출력 스트림 출력 outputStream out = NewFileOutputStream (f); // 파일 출력 스트림 OOS = 새로운 ObjectOutputStream (out); oos.writeobject (새로운 사람 ( "Zhang San", 30)); // 객체를 저장 oos.close (); // 닫다 } };4. 객체 입력 스트림 : ObjectInputStream
importjava.io.file; importjava.io.fileInputStream; importjava.io.inputstream; importjava.io.objectinputStream; publicclass serdemo02 {public static void main (String args []) ThrowSexception {file f = 새 파일 ( "d :" + file.separator + "test.txt"); // 경로 저장 객체를 정의합니다. // 객체 입력 스트림 입력 입력 입력 input = newFileInputStream (f); // 파일 입력 스트림 OIS = new ObjectInputStream (입력); // 인스턴트 객체 입력 스트림 객체 obj = ois.readobject (); // 객체를 읽습니다 ois.close (); // system.out.println (obj)을 닫습니다. }};6. 객체 그룹을 직렬화하십시오
객체를 출력 할 때 하나의 객체 출력 작업 (WriteObject (Objebj)) 만 제공되며 여러 객체가 제공되지 않습니다. 지금 여러 객체를 직렬화하려면 객체 배열을 사용하여 완료 할 수 있습니다. 배열은 참조 데이터 유형이므로 객체 유형을 직접 사용하여 수신 할 수 있습니다.
importjava.io.file; importjava.io.ioexception; importjava.io.fileoutputStream; importjava.io.outputStream; importjava.io.objectoutputStream; importjava.io.fileInputStream; importjava.io.inputstream; importjava.io.objectinputStream; publicclass serdemo05 {public static void main (String args []) ThrowSexception {[] = {새로운 사람 ( "Zhang San", 30), Newperson ( "Li Si", 31), New Person ( "Wang Wu", 32)}; ser (per); Object o [] = (Object []) dser (); for (int i = 0; i <o.length; i ++) {person p = (person) o [i]; System.out.println (P); }} public static void ser (Object obj []) ThrowSexception {file f = 새 파일 ( "d :" + file.separator + "test.txt"); // 경로 저장을 정의합니다. ObjectOutStream oos = null; // 객체 출력 스트림 출력 outputStream out = new FileOutputStream (f); // 파일 출력 스트림 OOS = 새로운 ObjectOutputStream (out); oos.writeobject (obj); // 객체 저장 oos.close (); // close} public static 객체 [] dser ()는 예외 {file f = 새 파일 ( "d :" + file.separator + "test.txt"); // 경로 저장 객체를 정의합니다. // 객체 입력 스트림 입력 입력 입력 input = newFileInputStream (f); // 파일 입력 스트림 OIS = new ObjectInputStream (입력); // 객체 입력 스트림 객체 OBJ [] = (Object []) ois.readobject (); // 객체를 읽습니다. ois.close (); // return obj를 닫습니다. }};배열이 저장할 수있는 객체 수는 제한되어 있으므로 클래스 세트를 사용하여 직렬화 작업을 수행 할 수 있습니다.
압축 스트림
전송 중 데이터의 양을 줄이기 위해 압축 스트림도 Java로 제공되며 파일 또는 폴더를 ZIP, JAR, GZIP 및 기타 형식으로 압축 할 수 있습니다.
이 스트림은 덜 사용되므로 간단한 소개입니다.
요약
위는 Java IO 데이터 작동 흐름, 객체 직렬화 및 압축 스트림 코드 분석에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!