바이트 단위 스트림
InputStream : 바이트 단위 입력 스트림 최상위 클래스
OutputStream : 바이트 단위 출력 스트림 최상위 클래스
추상메소드를 포함한 추상 클래스로 하위 클래스가 구현하여 사용
주요 하위 클래스는
FileInputStream 과 FileOutputStream 사용하기
파일에 (한 바이트씩) 자료를 읽고 쓰는데 사용
입력 스트림은 파일이 없는 경우 예외발생
출력 스트림은 파일이 없는 경우 (파일 생성)하여 출력한다.
한글은 FileWriter , FileReader 를 쓴다.
FileInputStream 파일에 바이트 단위로 읽는다.
package inputstream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStream2 {
public static void main(String[] args) {
try(FileInputStream fis = new FileInputStream("input.txt")) {
int i;
while((i = fis.read()) != -1) {
// end of file 파일에 도달하면 -1이 반환 즉 -1이 아닐떄까지 읽는다.
System.out.print((char)i);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("end");
}
}
FileInputStream;
끝까지 읽기
package inputstream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStream3 {
public static void main(String[] args) {
try(FileInputStream fis = new FileInputStream("input2.txt")) {
int i;
byte[] bs = new byte[10]; // 배열로 한꺼번에 읽어오기
while((i = fis.read(bs)) != -1) {
// end of file 파일에 도달하면 -1이 반환 즉 -1이 아닐떄까지 읽는다.
/*for(byte b : bs) {
System.out.print((char)b);
}*/
for(int k = 0; k < i; k++) {
System.out.println((char)bs[k]);
}
System.out.println("");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileOutputStream 쓰기
package stream.outputstream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputTest1 {
public static void main(String[] args) {
try(FileOutputStream fos = new FileOutputStream("output.txt",true)) {
// true하면 이어져서 쓰인다.
fos.write(65);
fos.write(66);
fos.write(67);
} catch(IOException e) {
System.out.println(e);
}
}
}
동시에
FileInputStream 읽고
FileOutputStream 쓰기
package stream.outputstream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputTest2 {
public static void main(String[] args) {
byte[] bs = new byte[26]; // 26개를 담음
byte data = 65;
for(int i = 0; i < bs.length; i++) {
bs[i] += data;
data++;
}
try(FileOutputStream fos = new FileOutputStream("alpha.txt",true);
FileInputStream fis = new FileInputStream("alpha.txt")) {
// true하면 이어져서 쓰인다.
fos.write(bs); // 쓴다.
int ch;
while((ch = fis.read()) != -1) { // 하나씩 읽었다.
System.out.print((char)ch);
}
} catch(IOException e) {
System.out.println(e);
}
}
}
'JAVA Programming' 카테고리의 다른 글
[85] Thread 멀티 기타메소드CurrentThread() , wait() , join() , (0) | 2020.08.03 |
---|---|
[84] Thread 란 무엇인가 ? (0) | 2020.08.03 |
[82] Scanner , Console 클래스 (0) | 2020.07.21 |
[80] I/O 입출력 스트림 정의 (0) | 2020.07.21 |
[79] 예외처리미루기 , 사용자정의예외 , throws 미루기,throw 예외발생 (0) | 2020.07.21 |