Recent Posts
Recent Comments
Link
06-30 12:53
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

파일 입출력 본문

DEV&OPS/Java

파일 입출력

ALEPH.GEM 2022. 5. 18. 18:27

File 클래스

import java.io.File;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileEx {

	public static void main(String[] args) throws Exception {
		File dir = new File("D:/temp/Dir");
		File file1 = new File("D:/temp/file1.txt");
		File file2 = new File("D:/temp/file2.txt");
		File file3 = new File(new URI("file:///D:/temp/file3.txt"));
		
		if(dir.exists() == false) {
			dir.mkdir();
		}
		if(file1.exists() == false) {
			file1.createNewFile();
		}
		if(file2.exists() == false) {
			file2.createNewFile();
		}
		if(file3.exists() == false) {
			file3.createNewFile();
		}
		
		File temp = new File("D:/temp");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd   a  HH:mm");
		File[] contents = temp.listFiles();
		for(File file:contents) {
			System.out.print(sdf.format(new Date(file.lastModified())));
			if(file.isDirectory()) {
				System.out.print(" <DIR>\t"+file.getName());
			}else {
				System.out.print(" "+file.getName());
			}
			System.out.println();
		}
	}

}

 

FileInputStream

import java.io.FileInputStream;

public class FileInputStreamEx {

	public static void main(String[] args) {
		try {
			//해당 경로에 해당 파일이 존재해야 합니다.
			FileInputStream fis = new FileInputStream("d:/temp/file1.txt");
			int data;
			while((data=fis.read()) != -1) {
				System.out.write(data);
			}
			fis.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}

}

 

FileOutputStream

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamEx {
	//파일 복사, 바이트 단위로 처리하기 때문에 바이너리파일도 처리 할 수 있음.
	public static void main(String[] args) throws IOException {
		String originalFileName = "d:/temp/file1.txt";
		String targetFileName = "d:/temp/file1_copy.txt";
		
		FileInputStream fis = new FileInputStream(originalFileName);
		FileOutputStream fos = new FileOutputStream(targetFileName);
		
		int readByteNo;
		byte[] readBytes = new byte[100];
		while((readByteNo = fis.read(readBytes)) != -1) {
			fos.write(readBytes, 0, readByteNo);
		}
		fos.flush();
		fos.close();
		fis.close();
		System.out.println("복사가 완료되었습니다.");
	}

}

FileInputStream과 FileOutputStream은 byte 기반으로 처리하므로 파일 포멧에 관계없이 이진파일도 처리할 수있습니다.

 

FileReader/FileWriter

FileReader/FileWriter 클래스는 문자 기반 스트림이므로 텍스트 파일을 처리합니다.

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

public class FileReaderEx {

	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("d:/temp/file1.txt");
		int readCharNo;
		char[] cbuf = new char[100];
		while((readCharNo = fr.read(cbuf)) != -1) {
			String data = new String(cbuf, 0, readCharNo);
			System.out.println(data);
		}
		fr.close();
	}

}

다음 예제는 문자열을 파일로 저장하는 예제입니다.

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterEx {

	public static void main(String[] args) throws IOException {
		File file = new File("d:/temp/file.txt");
		FileWriter fw = new FileWriter(file,true);
		fw.write("FileWriter는 한글로된 문자열을 출력할 수 있습니다.\r\n");
		fw.write("flush를 한 뒤 다시 write를 해서는 안됩니다. \r\n");
		fw.flush();
		fw.close();
		System.out.println("파일에 저장했습니다.");
		
	}

}

 

 

 

 

 

 

 

 

 

 

728x90

'DEV&OPS > Java' 카테고리의 다른 글

IO(블로킹)기반 자바 네트워킹  (0) 2022.05.20
입출력 보조 스트림  (0) 2022.05.19
자바 콘솔 입출력  (0) 2022.05.17
자바 stream  (0) 2022.05.17
Stack과 Queue  (0) 2022.05.10