JAVA 입 출력 (IO) 바이트 흐름
바이트 입력 흐름
java. io. InputStream 클래스 는 바이트 입력 흐름 을 나타 내 는 모든 종류의 초 클래스 입 니 다. 바이트 입력 흐름 은 이 종 류 를 직접 또는 간접 적 으로 계승 합 니 다. 보통 이러한 자손 류 를 사용 하여 바이트 입력 흐름 을 조작 하여 바이트 입력 흐름 을 읽 습 니 다.이런 종류 중에서 우리 가 가장 자주 사용 하 는 방법 은 다음 과 같다.
반환 값
방법
설명 하 다.
void
close()
이 입력 흐름 을 닫 고 이 흐름 과 연 결 된 모든 시스템 자원 을 방출 합 니 다.
abstract int
read()
입력 흐름 에서 데 이 터 를 읽 는 다음 바이트
int
read(byte[] b)
입력 흐름 에서 일정 수량의 바이트 를 읽 고 버퍼 그룹 b 에 저장 합 니 다.
int read(byte[] b, int off, int len)
입력 흐름 중 최대 len 개의 데이터 바이트 를 byte 배열 로 읽 습 니 다.
많은 초보 자 들 에 게 는 언제 입력 흐름 을 사용 하고 언제 출력 흐름 을 사용 하 는 지 고민 할 때 가 있다.사실 이것 은 매우 간단 하 다. 우 리 는 데이터 의 흐름 만 알 면 된다. 만약 데이터 가 메모리 로 흐 르 는 것 이 라면 입력 흐름 이 고 메모리 에서 흘러 나 오 는 것 은 출력 흐름 이다.
입력 흐름 의 실현 클래스 도 많 기 때문에 파일 입력 흐름 (java. io. FileInputStream) 을 예 로 들 어 소개 합 니 다. 다른 입력 흐름 은 기본적으로 대동소이 하기 때문에 스스로 사용 해 볼 수 있 습 니 다.주의해 야 할 것 은 입력 흐름 이 든 출력 흐름 이 든 사용 이 끝 난 후에 해당 하 는 닫 기 방법 으로 흐 르 는 자원 을 방출 하고 자원 을 닫 을 때 먼저 열 고 닫 는 원칙 을 따른다 는 것 이다.
직접 예:
import java.io.FileInputStream;
import java.io.IOException;
public class FileReadWrite {
public static void main(String[] args)
{
FileInputStream stream = null;
try
{
//
//test.txt :111111111112121112211212
stream = new FileInputStream("test.txt");
int data = -1;
// , , -1
while ((data = stream.read()) != -1)
{
// , ,
System.out.print((char) data);
}
}
catch (IOException e)
{
//
}
finally
{
try
{
if (stream != null)
{
//
stream.close();
}
}
catch (IOException e)
{
}
}
}
}
운행 결과: 111111112121112211212
read()
방법 을 사용 하 는 효율 은 매우 낮 으 며, 실제 개발 에 서 는 자주 사용 read(byte[] b)
하 며, 또 JAVA 입력 흐름 은 완충 흐름 도 제공한다.java.io.BufferedInputStream
바이트 입력 버퍼 흐름 입 니 다.BufferedInputStream 은 다른 입력 흐름 에 버퍼 입력 과 mark 와 reset 방법 을 지원 하 는 기능 을 추가 합 니 다.Buffered InputStream 을 만 들 때 내부 버퍼 배열 을 만 듭 니 다.스 트림 의 바 이 트 를 읽 거나 건 너 뛸 때 필요 한 입력 흐름 에 따라 내부 버퍼 를 다시 채 우 고 한 번 에 여러 바 이 트 를 채 울 수 있 습 니 다.mark 작업 은 입력 흐름 의 한 점 을 기록 합 니 다. reset 작업 은 포 함 된 입력 흐름 에서 새 바 이 트 를 가 져 오기 전에 마지막 mark 작업 후 읽 은 모든 바 이 트 를 다시 읽 습 니 다.바이트 출력 흐름
JAVA 의 바이트 입력 흐름 을 소개 하면 반대로 바이트 출력 흐름 이 나온다.java. io. Output Stream 클래스 는 출력 바이트 흐름 을 나타 내 는 모든 클래스 의 초 클래스 입 니 다.
이런 종류 중에서 우리 가 가장 자주 사용 하 는 방법 은 다음 과 같다.
반환 값
방법
설명 하 다.
void
close()
이 출력 흐름 을 닫 고 이 흐름 과 관련 된 모든 시스템 자원 을 방출 합 니 다.
void
flush()
이 출력 흐름 을 새로 고치 고 모든 버퍼 의 출력 바 이 트 를 강제로 씁 니 다.
void
write(byte[] b)
이 출력 흐름 에 b. length 바이트 를 지정 한 byte 배열 에서 기록 합 니 다.
void
write(byte[] b, int off, int len)
지정 한 byte 배열 에서 오프셋 off 에서 시작 하 는 len 바이트 를 이 출력 흐름 에 기록 합 니 다.
abstract void
write(int b)
이 출력 흐름 에 지정 한 바이트 쓰기
출력 흐름 은 출력 바이트 를 받 아들 여 수신 기 에 보 냅 니 다.FileInputStream 에 대응 하 는 자바. io. FileOutputStream 클래스 가 있 습 니 다.파일 에 데 이 터 를 쓰 는 것 을 FileOutputStream 으로 보 여 줍 니 다.
import java.io.FileOutputStream;
import java.io.IOException;
public class FileReadWrite {
public static void main(String[] args)
{
FileOutputStream stream = null;
try
{
stream = new FileOutputStream("test.txt");
//
stream.write("11111".getBytes());
//
stream.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
//
if (stream != null)
{
stream.close();
}
}
catch (IOException e)
{
}
}
}
}
사용 예시
이제 입력 흐름 과 출력 흐름 을 통합 하여 파일 복 사 를 완료 합 니 다.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileReadWrite {
/** * * * @param src * * @param desc * * @return */
public boolean copy(String src, String desc)
{
FileInputStream inputStream = null;
FileOutputStream outputStream = null;
try
{
inputStream = new FileInputStream(src);
outputStream = new FileOutputStream(desc);
int len = -1;
byte[] buffer = new byte[512];
// ,
while ((len = inputStream.read(buffer)) != -1)
{
outputStream.write(buffer, 0, len);
}
outputStream.flush();
}
catch (IOException e)
{
e.printStackTrace();
return false;
}
finally
{
try
{
//
if (inputStream != null)
{
inputStream.close();
}
}
catch (IOException e)
{
}
try
{
//
if (outputStream != null)
{
outputStream.close();
}
}
catch (IOException e)
{
}
}
return true;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.