스트림(Stream) : 데이터 입출력
데이터 입출력 채널(스트림)을 열어야 읽고쓰기가 가능해짐.
스트림은 단방향으로만 데이터를 전송할 수 있기 때문에 입력과 출력 각각의 stream이 필요
예외처리 반드시 필요(ex. 파일 입출력, 네트워크, 스레드)
파일 입출력 :
- 바이트 스트림(1byte) : 문자, 이미지, 영상, 오디오 등 멀티미디어 가능하며 이진형태.
- FileInputStream / FileOutputStream
- BufferedInputStream / BufferedOutputStream
- 문자 스트림(2byte) : 문자만 가능, 문자열의 코드값이 이진데이터로 저장됨
- FileReader(유니코드로 변환) / FileWriter(인코딩으로 변환)
- BufferedReader / BufferedWriter
프로세스 입출력 : PipedInputStream / PipedOutputStream
String source = "./test.txt";
String target = "./test123.txt";
try {
FileReader fileReader = new FileReader(source);
FileWriter fileWriter = new FileWriter(target);
char[] data = new char[100];
while(true){
int num = fileReader.read(data);
if(num==-1) break;
fileWriter.write(data);
}
fileReader.close();
fileWriter.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
try (BufferedReader br = new BufferedReader(new FileReader("goodjob.txt"))) {
String line;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}catch (IOException e) {
throw new RuntimeException(e);
}
파일 & 폴더 조회
파일
- .createNewFile() :파일생성(존재하면 생성하지 않음)
String fileName = "test.txt";
File file = new File(fileName);
try{
file.createNewFile();
if(file.exists()){
System.out.println("이름 : "+file.getName());
System.out.println("절대경로 : "+file.getAbsolutePath());
System.out.println("파일크기(Byte) : "+file.length());
}catch(IOException e){
thorw new RuntimeException(e);
}
폴더(파일 클래스)
- File.seperator : OS환경에 맞는 구분자 가져옴(ex. “A”+File.seperator +”B”)
- .mkdir() : 폴더 생성, 상위폴더 없으면 생성 실패
- .mkdirs() : 상위폴더까지 생성
String folderNmae = "A";
File folder = new file(folderName);
folder.mkdir();
folderName = "A/B/C";
folder = new file(folderName);
folder.mkdir(); //생성 실패, 상위폴더가 있어야 현재 폴더 생성가능
folder.mkdirs(); //상위폴더까지 전부 생성해줌.
- .listFiles() : 현재 위치의 파일, 폴더 전부 조회
- .isFile(), isDirectory()
String folder = "."; //현재 위치
FIle filesAndFolders = new File(folder);
for(File file : filesAndFolders.listFiles()){
if(file.isFile()){
System.out.println("파일 " +file.getName());
}else if(file.isDirectory()){
}
}
파일/폴더 삭제
- .delete() : 현재 파일/폴더만 삭제, 하위폴더가 있으면 삭제 실패
File file = new File("test.txt"); // 지울 파일 이름
file.delete(); // 삭제성공하면 true
File folder = new File("A");
folder.delete(); //하위 폴더가 있으면 삭제 실패함
File folder = new File("A/B/C");
folder.delete(); //C 폴더만 삭제 됨
// 하위 폴더까지 삭제하려면 메서드로 구현
deleteFolder(folder);
public static boolean deleteFolder(File folder){
if(folder.isDirecotry(){
for(File file : folder.listFiles()){
deleteFolder(file);
}
}
return folder.delete();
}
'Coding > 언어-JAVA' 카테고리의 다른 글
JAVA 메서드 활용 (0) | 2023.08.17 |
---|---|
JAVA 스레드(Thread) #Day10 (0) | 2023.08.17 |
JAVA 사용자 입출력(Scanner, Printf) (0) | 2023.08.17 |
JAVA 스트림(Stream) #Day8 (0) | 2023.08.16 |
JAVA 익명클래스, 람다 #Day8 (0) | 2023.08.16 |