자바 IO 스 트림 파일 의 읽 기와 쓰기 구체 적 인 인 인 스 턴 스
자바 IO 흐름 에 대한 조작 은 매우 흔히 볼 수 있 습 니 다.기본적으로 모든 항목 을 사용 합 니 다.만 날 때마다 인터넷 에서 찾 아 보면 됩 니 다.여러 번 시도 해 보면 불쾌 합 니 다.지난번 에 갑자기 한 동료 가 저 에 게 자바 파일 을 읽 으 라 고 물 었 습 니 다.저 는 갑자기 멍 해 졌 습 니 다.첫 번 째 반응 은 바로 인터넷 에서 찾 는 것 입 니 다.찾 을 수 있 지만 항상 든든 하지 않 습 니 다.그래서 오늘 시간 을 내 서 자바 IO 흐름 의 조작 을 보 았 습 니 다.수확 이 있 는 것 같 습 니 다.그리고 자 료 를 정리 해서 나중에 더 공부 할 수 있 도록 하 겠 습 니 다.
IO 흐름 의 분류:1.흐름 의 데이터 대상 에 따라 나 뉜 다.고급 흐름:모든 메모리 의 흐름 은 고급 흐름 이다.예 를 들 어 InputStreamReader 저급 흐름:모든 외부 장치 의 흐름 은 저급 흐름 입 니 다.예 를 들 어 InputStream,OutputStream 은 어떻게 구분 합 니까?모든 흐름 대상 의 접미사 에 Reader 나 Writer 를 포함 하 는 것 은 모두 고급 흐름 입 니 다.반대로 대체적으로 저급 흐름 이지 만 예외 도 있 습 니 다.예 를 들 어 PrintStream 은 고급 흐름 입 니 다.
2.데이터 의 흐름 에 따라 나 누 기:출력 흐름:데 이 터 를 쓰 는 것 이 고 프로그램(메모리)->외부 장치 의 입력 흐름:데 이 터 를 읽 는 것 이 며 외부 장치->프로그램(메모리)에서 어떻게 구분 합 니까?일반적으로 입력 흐름 은 Input 이 있 고 출력 흐름 은 Output 이 있 습 니 다.
3.스 트림 데이터 의 형식 에 따라 바이트 흐름:소리 나 그림 등 바 이 너 리 데이터 의 흐름 을 처리 합 니 다.예 를 들 어 InputStream 문자 흐름:텍스트 데이터(예 를 들 어 txt 파일)의 흐름 을 처리 합 니 다.예 를 들 어 InputStreamReader 어떻게 구분 합 니까?높 은 저급 흐름 으로 구분 할 수 있 습 니 다.모든 저급 흐름 은 바이트 흐름 이 고 모든 고급 흐름 은 문자 흐름 입 니 다.
4.흐름 데이터 의 포장 과정 에 따라 원시 흐름:실례 화 흐름 의 대상 이 되 는 과정 에서 다른 흐름 을 자신의 구조 방법 으로 하 는 매개 변수의 흐름 으로 들 어 갈 필요 가 없 으 며 원시 흐름 이 라 고 부른다.포장 흐름:실례 화 흐름 의 대상 을 하 는 과정 에서 다른 흐름 을 자신의 구조 방법 으로 매개 변 수 를 보 내 는 흐름 으로 전달 해 야 하 는데 이 를 포장 흐름 이 라 고 한다.어떻게 구분 합 니까?그래서 저급 류 는 모두 원시 류 이기 때문에 고급 류 는 모두 포장 류 입 니 다.
IO 흐름 대상 의 계승 관계(아래 그림):
다음은 구체 적 인 코드 예 를 살 펴 보 겠 습 니 다.
바이트 로 파일 읽 기
public class ReadFromFile {
/**
* , , 、 、 。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println(" , :");
//
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.print(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println(" , :");
//
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// ,byteread
while ((byteread = in.read(tempbytes)) != -1) {
System.out.print(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}
문자 로 파일 읽 기
/**
* , ,
*/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
System.out.println(" , :");
//
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// windows ,\r
, 。
// , 。
// , \r,
。 , 。
if (((char) tempchar) != '\r') {
System.out.print((char) tempchar);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(" , :");
//
char[] tempchars = new char[30];
int charread = 0;
// ,
reader = new InputStreamReader(new FileInputStream(fileName));
// ,charread
while ((charread = reader.read(tempchars)) != -1) {
// \r
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != '\r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
줄 별로 파일 읽 기
/**
* ,
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println(" , :");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// , null
while ((tempString = reader.readLine()) != null) {
//
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
한 파일 의 내용 을 다른 파일 에 쓰기(줄 에 따라 쓰기)
public class FileTest {
public static void main(String[] args) {
File file=new File("c:\\test.txt");
BufferedReader read=null;
BufferedWriter writer=null;
try {
writer=new BufferedWriter(new FileWriter("c:\\zwm.txt"));
} catch (IOException e1) {
e1.printStackTrace();
}
try {
read=new BufferedReader(new FileReader(file));
String tempString = null;
while((tempString=read.readLine())!=null){
writer.append(tempString);
writer.newLine();//
writer.flush();// ,
}
read.close();
writer.close();
System.out.println(" ...");
} catch (IOException e) {
e.printStackTrace();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python 구조 트 리 구 조 는 도시 등급 코드 에 응용 된다.실제 장면 응용 에서 일부 데이터 에 대해 등급 인 코딩 을 해 야 한다.이 럴 때 트 리 구 조 를 사용 하여 이 실현 을 지원 해 야 한다.여기 서 전형 적 인 응용 예 를 들 어 전국 도시 에 대한 등급 코드 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.