티스토리 뷰

 

File 클래스 : 
     파일(txt, doc, mp4, jpg, png, ..) 객체와 디렉토리(폴더) 객체를 다루기 위한 클래스

File 클래스의 인스턴스 생성 : new File(); 
    메모리(힙)에 File 클래스의 인스턴스를 생성한다는 의미
    실제 하드디스크에 있는 물리적인 파일/폴더(디렉토리)를 생성하는 것은 아님
    실제 파일/폴더를 만들기 위해서는 File 클래스의 메소드를 호출해야 함

 파일(디렉토리)의 경로 : 절대 경로, 상대 경로

절대 경로 : 루트(C:\, D:\)부터 파일(폴더)의 위치까지 전체 이름
      (예) C:\Users\sdedu\Desktop\JAVA_CODES\Java17_File\temp\test.txt

상대 경로 : 현재 작업 디렉토리를 기준으로 파일(폴더)의 위치를 표시
      (예) temp\test.txt 

 

. : 현재 디렉토리(폴더)
.. : 상위 디렉토리(폴더)

 

파일 구분자(file separator) - 운영체제(OS)마다 다르게 사용
         MS Windows - \
         Unix, Linux, Android, ... - / 사용
자바에는 File.separator 변수를 제공

 

 

 

 

public class FileMain08 {
	public static final String TEST_DIR1 = "C:\\test1";
	public static final String TEST_DIR2 = "test2"; //상대경로
	public static final String TEST_DIR3 = 
			"C:" + File.separator + "Study" + File.separator + "test3";

	
	public static void main(String[] args) {
	
		System.out.println(TEST_DIR1);
		System.out.println(TEST_DIR2);
		System.out.println(TEST_DIR3);
		
		File f = new File(TEST_DIR3); //파일, 폴더를 다루기 위한 객체 
		//exists() : 파일, 폴더 존재 여부 확인
		if(!f.exists()) { // 파일 ,폴더가 없는 경우 
			System.out.println("폴더가 없습니다.");
//mkdir() : 디렉토리를 생성하는 메소드. 성공하면 true , 실패하면 false 반환 >  상위디렉토리는 있을 때 사용
//mkdirs() : 상위디렉토리를 포함하여 생성하는 메소드 > Study\test3에서 study가 없을 떄 사용 
			if(f.mkdirs()) {
				System.out.println("폴더 생성 성공");
			}else {
				System.out.println("폴더 생성 실패");
			}
		}else { //파일, 폴더가 있는 경우
			System.out.println("폴더가 이미 존재합니다.");
		}
		
		
	}//end main()

 

 

 

새로운 빈 파일을 생성 
createNewFile() 

 

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

public class FileMain09 {

	public static final String DIR_NAME = "test1";
	public static final String FILE_NAME = "dummy.txt";
	public static final String FILE_PATH = 
			DIR_NAME + File.separator + FILE_NAME;
	
	public static void main(String[] args) {
		System.out.println(FILE_PATH);
		
		File f = new File(FILE_PATH);
		
		if(!f.exists()) {
			System.out.println("파일이 없습니다.");
			
			//createNewFile() : 새로운 빈 파일을 생성
			try {
				if(f.createNewFile()) {
					System.out.println("파일 생성 성공");
				}else {
					System.out.println("파일 생성 실패");
				}
			} catch (IOException e) {
				
				e.printStackTrace();
			}
			
		}else {
			System.out.println("파일이 이미 존재합니다.");
		}
	}//end main()

 

 

 

 

 

 

 파일 , 디렉토리 이름 변경 & 파일 삭제
.renameTo()   &   .delete()

 

 

 

 

import java.io.File;

public class FileMain10 {
	public static final String TEST1 = "test1";
	public static final String TEST2 = "test2";
	public static final String DUMMY = "dummy.txt";
	
	public static void main(String[] args) {
		// 파일, 디렉토리 이름 변경/삭제
		// test1 -> test2 디렉토리 이름 변경
		File org = new File(TEST1);
		File dest = new File(TEST2);
		
		if(org.renameTo(dest)) {
			System.out.println("디렉토리 이름 변경 성공");
			
		}else {
			System.out.println("디렉토리 이름 변경 실패");
		}
		
		
		//test2\dummy.txt 파일 삭제 
		String filePath = TEST2 + File.separator + DUMMY;
		File file = new File(filePath);
		if(file.delete()) {
			System.out.println("파일 삭제 성공");
		}else {
			System.out.println("파일 삭제 실패");
		}
		
	}//end main()

 

 

 

 

   .getProperty() :
현재 디렉토리(current working directory) 정보 확인   

  .getName()  :
파일, 디렉토리의 이름 리턴 

  .getPath()  :  경로를 리턴 
              File 객체를 생성했을 때
             1) 절대 경로를 생성했으면, 절대 경로로 이름을 리턴 (절대경로 : 전체위치)
             2) 상대 경로로 생성했으면, 상대 경로로 이름을 리턴 (상대경로 : 현재 위치)

.getAbsolutePath()  :  절대 경로를 리턴
isDirectory()  :  File 객체가 디렉토리이면 true를 리턴
isFile()  :  File 객체가 파일이면 true를 리턴
listFiles()  :  폴더(디렉토리)의 내용 확인

 

 

 

import java.io.File;

public class FileMain11 {

	public static void main(String[] args) {
		// 현재 디렉토리(current working directory)정보 확인
		
	   String cwd = System.getProperty("user.dir");
	   System.out.println("CWD : " + cwd);
	   
	   //현재 디렉토리에 대한 File 객체
	   File f = new File(cwd);
	   //getName() : 파일, 디렉토리의 이름 리턴 
	   System.out.println("이름 : " + f.getName());
	   //getPath() : 경로를 리턴
	   //		File 객체를 생성할 때 
	   //		1) 절대 경로를 생성했으면, 절대 경로로 이름을 리턴 (절대경로 : 전체 위치)
	   //		2) 상대 경로로 생성했으면, 상대 경로로 이름을 리턴 (상대경로 : 현재 위치)
	   System.out.println("경로 : " + f.getPath());
	   // getAbsolutePath() : 절대 경로를 리턴
	   System.out.println("절대 경로 : " + f.getAbsolutePath());
	   // isDirectory() : File 객체가 디렉토리이면 true를 리턴
	   // isFile() : File 객체가 파일이면 true를 리턴
	   System.out.println("디렉토리? " + f.isDirectory());
	   System.out.println("파일? " + f.isFile());
	   
	   // listFiles() : 폴더(디렉토리)의 내용 확인 
	   File[] list = f.listFiles();
	   for(File file : list) {
		   if(file.isDirectory()) {
			   System.out.print("<DIR>\t");
		   }else {
			   System.out.print("<FILE>\t");
		   }
		   System.out.print(file.getName() + "\t");
		   System.out.println(file.length() + "Bytes");
	   }
	   
	   
	   
	}//end main()

 

 

 

 

 


 

 

 

연락처 ver.0.3 

1. TODO  : data 폴더가 있는지 검사하고, 없으면 생성하는 함수

 

2. TODO :  데이터 파일이 존재하는지 검사하고, 

없는 경우 - 새로운 데이터 파일 생성

있는 경우 - 기존 파일에서 데이터를 읽어서 ArrayList에 추가 

 

3. TODO : 멤버 변수 list 객체를 data/contact.data 파일에 저장(쓰기)

 

4. TODO : data/contact.data 파일에서 ArrayList 객체를 읽어와서 

멤버변수 list에 저장(읽기)

 

ContactImple 수정 / Main수정

 

 


 

ContactImple 

		//데이터를 저장할 폴더와 파일 이름 정의 
		private static final String DATA_DIR = "data";
		private static final String DATA_FILE = "contact.data";
		
		// data 폴더의 contact.data 파일을 관리할 File 객체 선언 
		private File dataDir;
		private File dataFile;

 

 

아래는 내가 작성한 코드 

 

data 폴더가 있는지 검사하고, 없으면 생성하는 함수 initDataDir()

 

데이터 파일의 존재성 , List 추가 함수 intiDataFile()

 

 

데이터를 읽어서 리스트에 추가해야하는데 출력만 하고 있음 

 

list 객체를 파일에 저장(쓰기)하는 함수 writeDataToFile()

 

 

빨간 색으로 친 부분들 = 고친부분 = 좀 이상하다; 

 

 

 


 

 

 

문제풀이

 

 

 

1. TODO  : data 폴더가 있는지 검사하고, 없으면 생성하는 함수

 

2. TODO :  데이터 파일이 존재하는지 검사하고, 

없는 경우 - 새로운 데이터 파일 생성

있는 경우 - 기존 파일에서 데이터를 읽어서 ArrayList에 추가 

 

3. TODO : 멤버 변수 list 객체를 data/contact.data 파일에 저장(쓰기)

 

4. TODO : data/contact.data 파일에서 ArrayList 객체를 읽어와서 

멤버변수 list에 저장(읽기)

 


 

주말 복습 : https://www.w3schools.com/java/default.asp

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함