본문 바로가기
2022-2/자바

입출력,버퍼,파일입출력

by 철없는민물장어 2022. 11. 1.
728x90
반응형
문자 입출력하기
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class InputStreamEx01 {

	public static void main(String[] args) {
		InputStream in = System.in;
		OutputStream out = System.out;
		
		try {
			int inputChar = in.read();
			
			out.write(inputChar);
			out.flush();
			out.close();
			in.close();
		}catch(IOException e) {
			e.printStackTrace();
		}
	}

}

문자를 하나씩 처리한다.

(read 시 하나의 문자만 받음)


InputStreamReader, OutputStreamWriter

배열을 이용하여 여러 문자 한번에 처리하기

 

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class InputStreamEx01 {

	public static void main(String[] args) {
		InputStream in = System.in;
		InputStreamReader reader = new InputStreamReader(in);
		
		OutputStream out = System.out;
		OutputStreamWriter writer = new OutputStreamWriter(out);
		
		char inputData[] = new char[100];
		try {
			reader.read(inputData);
			writer.write(inputData);
			
			writer.close();
			reader.close();
			out.close();
			in.close();
		}catch(IOException e) {
			e.printStackTrace();
		}
	}

}

배열을 이용하기 때문에 고정적인 길이의 데이터만 처리 가능함.

 

버퍼를 이용하여 입출력하기
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class InputStreamEx01 {

	public static void main(String[] args) {
		InputStream in = System.in;
		InputStreamReader reader = new InputStreamReader(in);
		
		OutputStream out = System.out;
		OutputStreamWriter writer = new OutputStreamWriter(out);
		
		BufferedReader br = new BufferedReader(reader);
		BufferedWriter bw = new BufferedWriter(writer);
		
		try {
			String inputStr = br.readLine();
			bw.write(inputStr);
			bw.newLine();
			inputStr=br.readLine();
			bw.write(inputStr);
			bw.newLine();
			bw.flush();
			br.close();
			bw.close();
			
			writer.close();
			reader.close();
			out.close();
			in.close();
		}catch(IOException e) {
			e.printStackTrace();
		}
	}

}

파일 입력하기
import java.io.FileReader;
import java.io.IOException;

public class FileReaderEx01 {

	public static void main(String[] args) {
		try {
			FileReader fileReader = new FileReader("apple.txt");
			while(true) {
				int data = fileReader.read();
				if(data==-1) break;
				char ch = (char)data;
				System.out.println(ch);}
			
			}catch(IOException e) {
				e.printStackTrace();
			}
		
	}

}

char 문자 한 개씩 읽어 처리함.

 

import java.io.FileReader;
import java.io.IOException;

public class FileReaderEx01 {

	public static void main(String[] args) {
		try {
			FileReader fileReader = new FileReader("apple.txt");
			char arr[] = new char[100];
			while(true) {
				int data = fileReader.read(arr);
				if(data==-1) break;
				//char ch = (char)data;
				System.out.println(arr);}
			
			}catch(IOException e) {
				e.printStackTrace();
			}
		
	}

}

char arr []= arr[100]; 배열을 만들어 여러 문자를 한 번에 처리할 수 있다.

 

 

파일에 출력하기
import java.io.FileWriter;
import java.io.IOException;

public class FileReaderEx01 {

	public static void main(String[] args) {
		try {
			FileWriter fileWriter= new FileWriter("apple.txt");
			char arr[] = {'안','녕'};
			for(int i=0;i<arr.length;i++) {
				fileWriter.write(arr[i]);
			}
			fileWriter.close();
			}catch(IOException e) {
				e.printStackTrace();
			}
		
	}

}

파일 목록 출력하기
import java.io.File;
import java.util.GregorianCalendar;

public class FileEx01 {

	public static void main(String[] args) {
		File file = new File(".");
		File file_arr[] = file.listFiles();
		
		for(int i=0;i<file_arr.length;i++) {
			String name = file_arr[i].getName();
			if(file_arr[i].isFile()) {
				System.out.printf("%-25s %7d ",name,file_arr[i].length());
				
			}
			else {
				//디렉터리인 경우
				System.out.printf("%-25s    <DIR> ",name);
			}
			long time = file_arr[i].lastModified();//최종수정일자
			GregorianCalendar calendar = new GregorianCalendar();
			calendar.setTimeInMillis(time);
			System.out.printf("%1$tF %1$tT %n",calendar);
		}
	}

}
728x90
반응형

댓글