스트림(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 |