-
File객체 만들기-22.03.31고급자바 2022. 3. 31. 17:21728x90
File객체 만들기 연습
1. new File(String 파일 또는 경로명)
=> 디렉토리와 디렉토리 사이 또는 디렉토리와 파일명 사이의 구분문자는
'\'를 사용하거나 '/'를 사용할 수 있다.public class T01_FileTest { public static void main(String[] args) throws IOException { File file=new File("d:/D_Other/test.txt"); System.out.println("파일명: "+file.getName()); System.out.println("파일 여부: "+file.isFile()); System.out.println("디렉토리(폴더) 여부 : "+file.isDirectory()); System.out.println("---------------------------------------"); File file2=new File("d:\\D_Other"); System.out.println(file2.getName()+"은"); if(file2.isFile()) { System.out.println("파일"); }else if(file2.isDirectory()) { System.out.println("디렉토리(폴더)"); } System.out.println("---------------------------------------"); 2.new File(File parent, String child) // => 'parent'디렉토리 안에 있는 'child'파일 또는 디렉토리를 갖는다. File file3=new File(file2, "test.txt"); System.out.println(file3.getName()+"의 용량(크기):" +file3.length()+"bytes"); 3.new File(String parent, String child) //.현재, ..상위 , .\\D_Other\\test\\.. 현재 프로젝트의 D_Other안에 test 그런데 상위이므로 결국 D_Other를 나타냄 File file4=new File(".\\D_Other\\test\\..","test.txt"); //상대경로 System.out.println("절대 경로: "+file4.getAbsolutePath()); System.out.println("경로: "+file4.getPath()); System.out.println("표준 경로 : "+file4.getCanonicalPath()); System.out.println("---------------------------------------");
디렉토리 (폴더) 만들기 (위 예제 이어서 같은 main)
1. mkdir() => File객체의 경로 중 마지막 위치의 디렉토리를 만든다.
중간의 경로가 모두 미리 만들어져 있어야 한다.
2. mkdirs()=> 중간의 경로가 없으면 중간의 경로도 새롭게 만든 후 마지막 위치의 디렉토리를 만들어준다.
=> 위 두 메서드 모두 만들기를 성공하면 true, 실패하면 false를 반환한다.File file5=new File("d:/D_Other/연습용"); if(file5.mkdir()) { System.out.println(file5.getName()+"만들기 성공!"); }else { System.out.println(file5.getName()+"만들기 실패!"); } File file6=new File("d:/D_Other/test/java/src"); //java폴더가 없어서 중간폴더가 없기 떄문에 실패한다. if(file6.mkdir()) { System.out.println(file6.getName()+"만들기 성공!"); }else { System.out.println(file6.getName()+"만들기 실패!"); }
수정 file6.mkdirs()
File file6=new File("d:/D_Other/test/java/src"); //java폴더가 없어서 중간폴더가 없기 떄문에 실패한다. if(file6.mkdirs()) { System.out.println(file6.getName()+"만들기 성공!"); }else { System.out.println(file6.getName()+"만들기 실패!"); }
->연습용 폴더는 이미 아까 만들어졌기 때문에 실패가 나온것이고 src는 잘 만들어진것을 확인할 수 있다.

import java.io.File; import java.io.IOException; public class T02_FileTest { public static void main(String[] args) throws IOException { File f1=new File("d:/D_Other/sample.txt"); File f2=new File("d:/D_Other/test.txt"); if(f1.exists()) { System.out.println(f1.getName()+"은 존재합니다."); }else { System.out.println(f1.getName()+"은 없는 파일입니다."); if(f1.createNewFile()) { //잘만들어지면 true가 리턴됨 System.out.println(f1.getAbsolutePath() +"파일을 새로 만들었습니다."); } } if(f2.exists()) { System.out.println(f2.getName()+"은 존재합니다."); }else { System.out.println(f2.getName()+"은 없는 파일입니다."); } System.out.println("--------------------------------------"); }

File[] files=f3.listFiles() 사용하기
File f3=new File("D:/D_Other"); File[] files=f3.listFiles(); for(File f:files) { System.out.print(f.getName()+" => "); if(f.isFile()) { System.out.println("파일"); }else if(f.isDirectory()) { System.out.println("디렉토리(폴더)"); } } System.out.println("---------------------------------------"); String[] strfiles=f3.list(); for(String fileName : strfiles) { System.out.println(fileName); } System.out.println("---------------------------------------");

명령프롬프트 처럼 출력하기

public class T02_FileTest { public static void main(String[] args) throws IOException { displayFileList(new File("d:/D_Other")); } //지정된 디렉토리(폴더)에 포함된 파일과 디렉토리 목록을 보여주는 메서드 public static void displayFileList(File dir) { System.out.println("["+dir.getAbsolutePath() + "] 디렉토리 내용"); //디렉토리 안의 모든 파일 목록을 가져온다. File[] files=dir.listFiles(); //하위 디렉토리 정보를 저장할 ArrayList 생성(File 배열의 인덱스 값 저장용) List<Integer> subDirList = new ArrayList<Integer>(); //날짜를 출력하기 위한 형식 결정 SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd a hh:mm"); for(int i=0; i<files.length; i++) { String attr=""; //파일의 속성(읽기, 쓰기, 히든, 디렉토리 구분) String size=""; //파일 크기 if(files[i].isDirectory()) { attr="<DIR>"; subDirList.add(i); //인덱스 값을 List에 추가 }else { //디렉토리가 아니라면 size=files[i].length()+""; attr = files[i].canRead() ? "R": " "; attr += files[i].canWrite() ? "W": " "; attr += files[i].isHidden() ? "H": " "; } System.out.printf("%s %5s %12s %s\n", sdf.format(new Date(files[i].lastModified())), attr, size, files[i].getName()); } int dirCount=subDirList.size(); //폴더 안의 하위폴더 개수 구하기 int fileCount=files.length-dirCount; //폴더 안의 파일 개수 구하기 System.out.println(fileCount + "개의 파일," +dirCount+ "개의 디렉토리"); System.out.println(); } }
+추가
for(int i=0; i<subDirList.size(); i++) { //하위 폴더의 내용들도 출력하기 위해 현재 메서드를 재귀호출하여 처리한다. displayFileList(files[subDirList.get(i)]); }
728x90'고급자바' 카테고리의 다른 글
보조스트림, 인코딩 -22.04.01 (0) 2022.04.01 스트림-22.04.01 (0) 2022.04.01 람다식-22.03.31 (0) 2022.03.31 wait(),notify()-22.03.31 (0) 2022.03.31 리스트 동기화 처리 예제-22.03.31 (0) 2022.03.31