삶 가운데 남긴 기록 AACII.TISTORY.COM
파일 입출력 본문
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 |