728x90
예외 처리 throws
package test15;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest2 {
public static void main(String[] args) throws IOException {
//바이트 단위 스트림 생성과 처리
//1) 입력 스트림(InputStream) 클래스 상속
//2) 출력 스트림(OutputStream) 클래스 상속
//파일 단위 처리스트림(FileInputStream, FileOutputStream) 클래스로 구현
//FileOutputStream 클래스 : 파일로 저장(내보내기, 쓰기, 출력)하는 스트림을 생성하는 클래스
//write() 메소드 사용
FileOutputStream fos = new FileOutputStream("src/test15/output.txt");
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
fos.close(); //파일 출력 스트림 닫기
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
}
}
ABCDE
BCDECD
예외처리 try-catch-finally
package test15;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest2 {
public static void main(String[] args){
/*
//바이트 단위 스트림 생성과 처리
//1) 입력 스트림(InputStream) 클래스 상속
//2) 출력 스트림(OutputStream) 클래스 상속
//파일 단위 처리스트림(FileInputStream, FileOutputStream) 클래스로 구현
//FileOutputStream 클래스 : 파일로 저장(내보내기, 쓰기, 출력)하는 스트림을 생성하는 클래스
//write() 메소드 사용
FileOutputStream fos = new FileOutputStream("src/test15/output.txt");
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
fos.close(); //파일 출력 스트림 닫기
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
*/
FileOutputStream fos = null;
try {
fos = new FileOutputStream("src/test15/output1.txt");
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
fos.close(); //파일 출력 스트림 닫기
} catch (IOException e){
e.printStackTrace();
}
}
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
}
}
ABCDE
BCDECD
예외처리 try-with-resource (jdk7버전이상)
package test15;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest2 {
public static void main(String[] args){
/*
//바이트 단위 스트림 생성과 처리
//1) 입력 스트림(InputStream) 클래스 상속
//2) 출력 스트림(OutputStream) 클래스 상속
//파일 단위 처리스트림(FileInputStream, FileOutputStream) 클래스로 구현
//FileOutputStream 클래스 : 파일로 저장(내보내기, 쓰기, 출력)하는 스트림을 생성하는 클래스
//write() 메소드 사용
FileOutputStream fos = new FileOutputStream("src/test15/output.txt");
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
fos.close(); //파일 출력 스트림 닫기
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
*/
/*
FileOutputStream fos = null;
try {
fos = new FileOutputStream("src/test15/output1.txt");
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
fos.close(); //파일 출력 스트림 닫기
} catch (IOException e){
e.printStackTrace();
}
}
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
*/
try(FileOutputStream fos = new FileOutputStream("src/test15/output2.txt")){
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
} catch(IOException e) {
e.printStackTrace();
}
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
}
}
ABCDE
BCDECD
package test15;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest2 {
public static void main(String[] args){
/*
//바이트 단위 스트림 생성과 처리
//1) 입력 스트림(InputStream) 클래스 상속
//2) 출력 스트림(OutputStream) 클래스 상속
//파일 단위 처리스트림(FileInputStream, FileOutputStream) 클래스로 구현
//FileOutputStream 클래스 : 파일로 저장(내보내기, 쓰기, 출력)하는 스트림을 생성하는 클래스
//write() 메소드 사용
FileOutputStream fos = new FileOutputStream("src/test15/output.txt");
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
fos.close(); //파일 출력 스트림 닫기
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
*/
/*
FileOutputStream fos = null;
try {
fos = new FileOutputStream("src/test15/output1.txt");
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
fos.close(); //파일 출력 스트림 닫기
} catch (IOException e){
e.printStackTrace();
}
}
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
*/
try(FileOutputStream fos = new FileOutputStream("src/test15/output3.txt",true)){
fos.write(65); //'A'
fos.write(66); //'B'
fos.write(67); //'C'
fos.write('D');
fos.write('E');
fos.write('\n');
fos.write(32); //공백
byte [] buf = {'B', 'C', 'D','E' };
fos.write(buf);
fos.write(buf,1,2);
fos.flush(); //파일 출력 스트림에 남아 있는 데이터를 강제로 비우기(파일로 저장)
} catch(IOException e) {
e.printStackTrace();
}
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
}
}
ABCDE
BCDECDABCDE
BCDECD
바이트 배열로 출력
package test15;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest3 {
public static void main(String[] arg) {
//영문자 알파벳 : A ~ Z까지 output4.txt에 저장
//65~90
try(FileOutputStream fos = new FileOutputStream("src/test15/output4.txt")){
int A = 65;
byte [] abc = new byte[26];
for(int i = 0 ; i< abc.length;i++) {
abc[i] = (byte) A;
A++;
}
fos.write(abc);
} catch(IOException e) {
e.printStackTrace();
}
System.out.println("파일(쓰기) 저장이 완료되었습니다.");
}
}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
package test15;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest1 {
public static void main(String[] args) throws IOException {
//파일 단위 처리 스트림(FileOutputStream) 클래스
//파일로 저장(내보내기)하는 스트림을 생성하는 클래스
String source = "src/test15/SystemInTest.java"; //읽어온 파일(원본)
String target = "src/test15/SystemInTest.txt"; //저장(대상)할 파일
try(FileInputStream fis = new FileInputStream(source);
FileOutputStream fos = new FileOutputStream(target)){
//읽은 byte를 저장할 변수
int data;
//한 번에 10개씩 읽어와서 저장할 수 있도록 배열 생성
byte[] total = new byte[10];
while((data = fis.read(total))!= -1) {
System.out.println(data);
//데이터가 저장된 배열의 0번째 위치부터 실제로 읽은 byte 수 만큼 쓰기
fos.write(total,0,data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
SystemInTest.txt
package test15;
import java.io.InputStream;
public class SystemInTest {
public static void main(String[] args) {
/*
1. 표준 입출력
PrintStream 클래스 out -> 표준출력 스트림(System.out.println()메소드)
InputStream 클래스 in -> 표준입력 스트림(System.in)
OutputStream 클래스 err -> 표준 오류 출력 스트림
*/
System.out.println("알파벳 여러 개를 쓰고 [Enter]를 누르세요.");
int i;
// 문자 1개 입력받기(바이트 단위임으로 한글은 깨져서 나옴)
// try {
// i = System.in.read();
// System.out.println(i);
// System.out.println((char)i);
// } catch (IOException e) {
// e.printStackTrace();
// }
// 문자 여러개를 입력 받기
try {
// while((i = System.in.read()) != '\n') {
while((i = System.in.read()) != -1) {
System.out.println(i);
System.out.println((char)i);
}
} catch (Exception e) {
e.printStackTrace();
}
/*
System.out.println("알파벳 여러 개를 쓰고 [Enter]를 누르세요.");
InputStream in = System.in;
int i;
try {
while((i = in.read()) != '\n') {
System.out.println((char)i);
}
} catch (Exception e) {
e.printStackTrace();
}
*/
}
}
package test15;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest1 {
public static void main(String[] args) throws IOException {
//파일 단위 처리 스트림(FileOutputStream) 클래스
//파일로 저장(내보내기)하는 스트림을 생성하는 클래스
String source = "src/test15/SystemInTest.java"; //읽어온 파일(원본)
String target = "src/test15/SystemInTest.txt"; //저장(대상)할 파일
try(FileInputStream fis = new FileInputStream(source);
FileOutputStream fos = new FileOutputStream(target)){
//읽은 byte를 저장할 변수
int data;
//한 번에 10개씩 읽어와서 저장할 수 있도록 배열 생성
//byte[] total = new byte[10];
//한 번에 파일의 바이트 수만큼 저장할 배열의 크기 지정
byte[] total = new byte[fis.available()];
while((data = fis.read(total))!= -1) {
System.out.println(data);
//데이터가 저장된 배열의 0번째 위치부터 실제로 읽은 byte 수 만큼 쓰기
fos.write(total,0,data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
1313
문자 단위 스트림
FileReader
package test15;
import java.io.FileReader;
import java.io.IOException;
public class FileReadTest1 {
public static void main(String[] args) {
//문자(텍스트) 데이터의 입출력을 다루는 스트림 : FileReader 클래스와 FileWriter 클래스
//문자 데이트의 입력을 다루는 스트림 : FileReader
try(FileReader fr = new FileReader("src/test15/reader.txt")){
int i;
while((i = fr.read()) != -1) {
System.out.println((char)i);
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
H
e
l
l
o
W
o
r
l
d
!
package test15;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteTest1 {
public static void main(String[] args) {
//문자(텍스트) 데이터의 입출력을 다루는 스트림 : FileReader 클래스와 FileWriter 클래스
//문자 데이터의 출력(저장, 내보내기)을 다루는 스트림 : FileWriter 클래스
//문자 단위 출력 스트림으로 텍스트 파일 쓰기(파일로 저장) : 텍스트 파일만 대상
//문자 단위 출력 스트림 : Writer클래스, FileWriter 클래스 write() 메소드
try(FileWriter fw = new FileWriter("src/test15/writer.txt")){
fw.write('A');
fw.write("자바는 java");
char[] buf = {'B','C','D','E','F'};
fw.write(buf);
fw.write(buf,1,2);
} catch(IOException e) {
e.printStackTrace();
}
System.out.println("파일이 저장되었습니다.");
}
}
A자바는 javaBCDEFCD
보조 스트림
package test15;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamReaderTest1 {
public static void main(String[] args) {
//기반 스트림, 보조 스트림
// 1) 기반 스트림 : 직접 읽거나 쓰는 기능을 가진 스트림
//FileInputStream, FileOutputStream
// 2) 보조스트림 : 기반 스트림에 부가 기능을 제공하는 스트림
//InputStreamReader, OutputStreamReader, BufferedInputStream, BufferedOutputStream
//InputStreamReader : InputStream(기반스트림)을 매개변수로 받아 생성되는 보조 스트림
//바이트 단위로 읽어 들인 내용을 문자로 변환해주는 역할을 하는 스트림
// -> FileReader 클래스로 스트림을 생성하고 사용가능
//채팅프로그램
try(InputStreamReader isr = new InputStreamReader(new FileInputStream("src/test15/reader.txt"))){
int data;
while((data = isr.read())!= -1) {
System.out.println((char)data);
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
파일 복사
package test15;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopyTest1 {
public static void main(String[] args) {
//FileInputStream, FileOutputStream 클래스를 사용하여 이미지 파일을 읽어와서 복사
long ms = 0;
try(FileInputStream fis = new FileInputStream("src/test15/redpanda.png");
FileOutputStream fos = new FileOutputStream("src/test15/redpanda_1.png")){
ms = System.currentTimeMillis();
int i;
while((i = fis.read())!= -1) {
fos.write(i);
}
ms = System.currentTimeMillis() - ms;
}catch(IOException e) {
e.printStackTrace();
}
System.out.println("파일 복사 " + ms + "소요됨");
}
}
728x90
'KDT > Java' 카테고리의 다른 글
240311 Java - 내부 클래스2 (0) | 2024.03.11 |
---|---|
240307 Java 입출력 스트림 3, 내부 클래스 1 (0) | 2024.03.07 |
240304 Java - 입출력과 스트림 1 (0) | 2024.03.04 |
240131 Java - 자바 입출력 (0) | 2024.01.31 |
240129 Java - 날짜와 시간을 다루는 클래스 (0) | 2024.01.29 |