InputStream
package kr.s28.iostream;
import java.io.IOException;
public class InputStreamMain01 {
public static void main(String[] args) {
System.out.print("영문자 1개 입력:");
try {
//문자 하나를 입력 받아서 아스키 코드로 반환한다.(아스키 코드이기 때문에 한글을 쓰면 이상한 결과가 나온다.)
//입력이기 때문에 InputStream을 써서 out이 아닌 in을 사용한다.
int a = System.in.read();//그냥 쓰면 IOException 에러가 생기기 때문에 try catch 사용
System.out.println(a+ "," +(char)a);
//enter(엔터를 누르는 것)은 \\r와 \\n이 합쳐진 것 엔터 때문에 결과값이 제대로 나오지않아서 아래코드를 통해 엔터를 없앤것.
System.in.read(); //enter 처리 \\r 13
System.in.read(); //enter 처리 \\n 10
System.out.print("숫자 1개 입력 : ");
int b = System.in.read() - 48; // 숫자와 아스키코드와의 차이가 48이기 때문에 -48을 한다.
System.out.println(b);
}catch(IOException e) {
e.printStackTrace();
}
}
}
영문자 1개 입력:Q
81,Q
숫자 1개 입력 : 81
8
package kr.s28.iostream;
import java.io.IOException;
public class InputStreamMain02 {
public static void main(String[] args) {
int input = 0;
try {
//명시적으로 -1을 만들려면 ctrl+z 를 누르면됨.
while((input=System.in.read())!= -1) {
System.out.println(input + "," + (char)input);
}
//whilie을 빠져나왔다는 것.
System.out.println("프로그램 종료");
}catch(IOException e) {
e.printStackTrace();
}
}
}
FileInputStream
package kr.s28.iostream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamMain01 {
public static void main(String[] args) {
FileInputStream fis = null;
int readbyte;
byte[] readbyte2; //바이트 배열 생성
try {
fis = new FileInputStream("file.txt");
//파일의 정보를 한 문자씩 읽어 들여 아스키 코드로 반환
//영문 이외의 문자(2byte<한글>)는 깨진다. 1byte만 안깨짐
/*
while((readbyte = fis.read())!= -1) {
System.out.print((char)readbyte);
}
*/
//영문 이외의 문자도 처리 가능
readbyte2 = new byte[fis.available()];//available() -> 입력받은 문자를 몇 바이트인지 자동으로 환산해주는 것
//파일로부터 읽어 들인 데이터를 byte[]에 저장
fis.read(readbyte2);
//byte[] -> String
System.out.println(new String(readbyte2));
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally {
//자원정리:작업을 못하게 만드는 것. 객체 소멸은 시키지 못함.
if(fis!=null)try {fis.close();}catch(IOException e) {}
}
}
}
java.io.FileNotFoundException: file.txt (지정된 파일을 찾을 수 없습니다)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
at kr.s28.iostream.FileInputStreamMain01.main(FileInputStreamMain01.java:13)
FileOutputStream
package kr.s28.iostream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamMain01 {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
//파일 생성(덮어쓰기)
fos = new FileOutputStream("fileout.txt");//상대경로에 만듬.
//파일 생성(이어쓰기)
//fos = new FileOutputStream("fileout.txt",true); //기본값이 false이기 때문에 반대인 true를 써주면 이어쓰기가 됨.
String message = "Hello File! 파일에 내용 기술";//fileout.txt에 넣을 내용
//파일에 데이터 기록
//String -> byte[] =>한글을 입력하기 위해서는 byte를 써야됨.
fos.write(message.getBytes());//byte[]로 바꾼걸 입력하는 과정
System.out.println("파일을 생성하고 내용을 기술했습니다.");
}catch(IOException e) {
e.printStackTrace();
}finally {
if(fos !=null)try {fos.close();}catch(IOException e) {}
}
}
}
파일을 생성하고 내용을 기술했습니다.
package kr.s28.iostream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamMain02 {
public static void main(String[] args) {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
fos = new FileOutputStream("bufferOut.txt");//파일생성
bos = new BufferedOutputStream(fos);//데이터를넣을 파일을 넘김받음.(문자들을 Buffer안에다가 넣은다음 한 번에 옮기기위해)
String str = "BufferedOutputStream Test 입니다";
//String -> byte[]
bos.write(str.getBytes());//buffer에다가 기록하는코드.
//버퍼를 비우고 버퍼에 있는 데이터를 파일에 출력
//플러시하지 않으면 버퍼에 담겨있는 데이터를 파일에 저장하지않음.
bos.flush();//실행시 str의 내용들이 옮겨진다.
System.out.println("파일을 생성하고 파일에 내용을 기술함.");
}catch(IOException e ) {
e.printStackTrace();
}finally {
//자원정리(flush를 쓰지않고 이걸 쓰면 글이 파일로 옮겨진다.)
/*(Buffered)는 메모리공간을 활용한다는 뜻이다.
* BufferedOutputStream의 close메서드는 지원정리하기전에
* buffer를 체크해서 남아있는 데이터가 있으면 flush 처리함.
*/
if(bos !=null) try {bos.close();} catch(IOException e){};
if(fos != null)try {fos.close();}catch(IOException e){}
}
}
}
파일을 생성하고 파일에 내용을 기술함.
'쌍용교육(JAVA) > JAVA' 카테고리의 다른 글
쌍용교육 -JAVA 수업 15일차 BufferedReader,FileReader,FileWriter (0) | 2024.04.12 |
---|---|
쌍용교육 -JAVA 수업 15일차 File (0) | 2024.04.12 |
쌍용교육 -JAVA 수업 14일차 HashSet,Hashmap,Hashtable (0) | 2024.04.12 |
쌍용교육 -JAVA 수업 14일차 Stack스택(LIFO 후입선출),Queue(FIFO 선입선출) (0) | 2024.04.12 |
쌍용교육 -JAVA 수업 14일차 실습(Score.ScoreMain,ScoreValueException) (0) | 2024.04.11 |