programing

Input Stream과 Output Stream이 뭐죠?왜, 언제 사용합니까?

luckcodes 2022. 7. 19. 22:20

Input Stream과 Output Stream이 뭐죠?왜, 언제 사용합니까?

설명 좀 InputStream ★★★★★★★★★★★★★★★★★」OutputStream

모두 .InputStream ★★★★★★★★★★★★★★★★★」OutputStream.

설명과 함께 코드 조각도 함께 넣어주시면 감사하겠습니다.감사합니다!

★★★의 InputStream ★★★★★★★★★★★★★★★★★」OutputStream입력과 출력의 다른 방법을 추상화하는 것입니다.스트림이 파일인지 웹 페이지인지 화면인지는 중요하지 않습니다.중요한 것은 스트림으로부터 정보를 수신하는 것(또는 그 스트림으로 정보를 송신하는 것)뿐입니다.

InputStream을 사용하다

OutputStream★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

여기 샘플 코드가 있습니다. 예에서는 '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 맞다.InputStream instr ★★★★★★★★★★★★★★★★★」OutputStream osstr되었습니다.

int i;

while ((i = instr.read()) != -1) {
    osstr.write(i);
}

instr.close();
osstr.close();

InputStream은 읽기, OutputStream은 쓰기에 사용됩니다.서로 데코레이터로 연결되어 서로 다른 유형의 모든 소스에서 데이터를 읽고 쓸 수 있습니다.

예를 들어, 파일에 원시 데이터를 쓸 수 있습니다.

File file = new File("C:/text.bin");
file.createNewFile();
DataOutputStream stream = new DataOutputStream(new FileOutputStream(file));
stream.writeBoolean(true);
stream.writeInt(1234);
stream.close();

쓰여진 내용을 읽으려면:

File file = new File("C:/text.bin");
DataInputStream stream = new DataInputStream(new FileInputStream(file));
boolean isTrue = stream.readBoolean();
int value = stream.readInt();
stream.close();
System.out.printlin(isTrue + " " + value);

다른 유형의 스트림을 사용하여 읽기/쓰기를 향상시킬 수 있습니다.예를 들어 효율을 높이기 위해 버퍼를 도입할 수 있습니다.

DataInputStream stream = new DataInputStream(
    new BufferedInputStream(new FileInputStream(file)));

개체와 같은 다른 데이터를 쓸 수 있습니다.

MyClass myObject = new MyClass(); // MyClass have to implement Serializable
ObjectOutputStream stream = new ObjectOutputStream(
    new FileOutputStream("C:/text.obj"));
stream.writeObject(myObject);
stream.close();

다른 입력 소스에서 읽을 수 있습니다.

byte[] test = new byte[] {0, 0, 1, 0, 0, 0, 1, 1, 8, 9};
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(test));
int value0 = stream.readInt();
int value1 = stream.readInt();
byte value2 = stream.readByte();
byte value3 = stream.readByte();
stream.close();
System.out.println(value0 + " " + value1 + " " + value2 + " " + value3);

대부분의 입력 스트림에는 출력 스트림도 있습니다.특수한 내용을 읽고 쓰기 위해 자신만의 스트림을 정의할 수 있으며 복잡한 내용을 읽기 위한 복잡한 스트림이 있습니다(예: ZIP 형식을 읽고 쓰기 위한 스트림이 있습니다).

Java 튜토리얼에서:

스트림은 일련의 데이터입니다.

프로그램은 입력 스트림을 사용하여 소스에서 한 번에 한 항목씩 데이터를 읽습니다.

여기에 이미지 설명 입력

프로그램은 출력 스트림을 사용하여 한 번에 한 항목씩 대상에 데이터를 씁니다.

여기에 이미지 설명 입력

위의 데이터 소스 및 데이터 수신처는 데이터를 보유, 생성 또는 소비하는 모든 데이터일 수 있습니다.디스크 파일도 포함되지만 소스 또는 타깃은 다른 프로그램, 주변기기, 네트워크 소켓 또는 어레이일 수도 있습니다.

Oracle 튜토리얼의 샘플 코드:

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

public class CopyBytes {
    public static void main(String[] args) throws IOException {

        FileInputStream in = null;
        FileOutputStream out = null;

        try {
            in = new FileInputStream("xanadu.txt");
            out = new FileOutputStream("outagain.txt");
            int c;

            while ((c = in.read()) != -1) {
                out.write(c);
            }
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    }
}

이 프로그램은 바이트 스트림을 사용하여 xanadu를 복사합니다.txt 파일을 다시 출력합니다.txt, 한 번에1바이트씩 쓰기

고급 문자 스트림에 대한 자세한 내용은 다음 SE 질문을 참조하십시오.문자 스트림은 바이트 스트림 위에 래퍼로 표시됩니다.

바이트 스트림 및 문자 스트림

InputStream에서 읽고 OutputStream에 씁니다.

예를 들어 파일을 복사한다고 가정합니다.소스 파일에서 읽을 FileInputStream과 새 파일에 쓸 FileOutputStream을 만듭니다.

데이터가 문자 스트림인 경우 원하는 경우 InputStream 대신 FileReader를 사용하고 OutputStream 대신 FileWriter를 사용할 수 있습니다.

InputStream input = ... // many different types
OutputStream output = ... // many different types

byte[] buffer = new byte[1024];
int n = 0;
while ((n = input.read(buffer)) != -1)
    output.write(buffer, 0, n);

input.close();
output.close();

OutputStream은 쓰기 출력을 나타내는 추상 클래스입니다.OutputStream 클래스는 여러 가지가 있으며 특정 항목(화면, 파일, 바이트 배열, 네트워크 연결 등)에 씁니다.InputStream 클래스는 동일한 항목에 액세스하지만 이러한 클래스에서 데이터를 읽습니다.

다음은 FileOutputStream 및 FileInputStream을 사용하여 파일에 데이터를 쓴 후 다시 읽어들이는 방법의 좋은 기본 예입니다.

흐름은 액체, 공기 또는 가스의 연속적인 흐름이다.

Java 스트림은 원본에서 대상으로의 데이터 흐름입니다.소스 또는 대상은 디스크, 메모리, 소켓 또는 기타 프로그램일 수 있습니다.데이터는 바이트, 문자 또는 개체일 수 있습니다.C# 또는 C++ 스트림에도 동일하게 적용됩니다.자바 스트림에 대한 좋은 비유는 수돗물에서 욕조로, 나중에 배수구로 흐르는 물입니다.

데이터는 스트림의 정적 부분을 나타내며 읽기 및 쓰기 방식은 스트림의 동적 부분을 나타냅니다.

InputStream.OutputStream는, 수신처에의 데이터 플로우를 나타냅니다. ㅇㅇㅇㅇㅇ.InputStream ★★★★★★★★★★★★★★★★★」OutputStream는 C 파일 포인터 등 데이터에 대한 낮은 수준의 액세스에 대한 추상화입니다.

스트림: 일반인용어로 스트림은 데이터이며, 대부분의 일반 스트림은 데이터의 바이너리 표현입니다.

Input Stream : 파일 또는 기타 소스에서 데이터를 읽을 경우 사용되는 스트림은 입력 스트림입니다.간단히 말하면 입력 스트림은 데이터를 읽기 위한 채널 역할을 합니다.

[Output Stream] : 소스(파일 등)에서 데이터를 읽고 처리하는 경우 먼저 데이터를 저장해야 합니다.데이터 저장의 평균은 output stream 입니다.

출력 스트림은 일반적으로 파일이나 네트워크 등의 데이터 수신처에 관련되어 있습니다.java 출력 스트림은 데이터가 최종적으로 쓰여지고 끝나는 수신처입니다.

import java.io.printstream;

class PPrint {
    static PPrintStream oout = new PPrintStream();
}

class PPrintStream {
    void print(String str) { 
        System.out.println(str)
    }
}

class outputstreamDemo {
    public static void main(String args[]) {
        System.out.println("hello world");
        System.out.prinln("this is output stream demo");
    }
}

InputStream의 한 종류에서는 파일처럼 데이터 소스의 "표현"이라고 생각할 수 있습니다.예를 들어 다음과 같습니다.

FileInputStream fileInputStream = new FileInputStream("/path/to/file/abc.txt");

fileInputStream은 이 경로의 데이터를 나타냅니다.읽기 메서드를 사용하여 파일에서 바이트를 읽을 수 있습니다.

다른 종류의 InputStream에서는 다른 inputStream을 도입하여 압축 해제와 같은 추가 처리를 수행합니다.예를 들어 다음과 같습니다.

GZIPInputStream gzipInputStream = new GZIPInputStream(fileInputStream);

gzipInputStream은 fileInputStream을 압축된 데이터 소스로 취급합니다.read(buffer, 0, buffer.length) 메서드를 사용하면 gzip 파일의 일부가 지정된 버퍼로 압축 해제됩니다.

InputStream을 사용하는 이유는 소스의 데이터가 점점 커짐에 따라 소스 파일에 500GB의 데이터가 있다고 가정할 때 메모리(고가 머신, GC 할당에 적합하지 않음)에 모든 데이터를 보관하고 싶지 않고 결과를 더 빨리 얻고 싶기 때문입니다(전체 파일을 읽는 데 시간이 오래 걸릴 수 있음).

Output Stream도 마찬가지입니다.전체 작업이 완료될 때까지 기다리지 않고 일부 결과를 대상으로 이동하기 시작할 수 있으며 메모리 소비도 줄일 수 있습니다.

자세한 설명과 예를 보려면 다음 요약을 확인하십시오.InputStream, OutputStream, InputStream 사용방법, OutputStream 사용방법

다른 훌륭한 답변으로 넘어가겠습니다.간단한 말로 하겠습니다.

스트림 - 언급한 것처럼 @Sher Mohammad는 데이터입니다.

입력 스트림은 예를 들어 파일에서 입력(데이터)을 가져옵니다.예를 들어 파일(사용자가 파일을 업로드하고 입력)이 있을 때 해당 파일을 읽고 싶습니다.

Output Stream(출력 스트림)– 그 반대입니다.예를 들어 Excel 파일을 생성하여 특정 장소에 출력합니다.

파일에 대한 "쓰기 방법"은 파일 출력 스트림이 아닌 보낸 사람(Excel 워크북 클래스)에서 정의됩니다.

이 문맥의 를 참조해 주세요.

try (OutputStream fileOut = new FileOutputStream("xssf-align.xlsx")) {
    wb.write(fileOut);
}
wb.close();

언급URL : https://stackoverflow.com/questions/1830698/what-is-inputstream-output-stream-why-and-when-do-we-use-them