자바 FTPClient 의 상대 경로 와 절대 경로

루트 디 렉 터 리
FTPClient 의 루트 디 렉 터 리 는"/"입 니 다.
루트 디 렉 터 리 로 전환
ftpClient.changeWorkingDirectory("/"); //       
String dir = ftpClient.printWorkingDirectory(); //         
System.out.println(dir); //           ,     "/"

절대 경로
절대 경 로 는'/AA','/aa/BB','/aa/BB/CC/','/aa/BB/CC/test.txt'등 으로 시작한다.
절대 경 로 를 사용 하면 현재 작업 경로 의 영향 을 받 지 않 습 니 다.
예 를 들 어 다음 인 스 턴 스 코드 는 changeWorkingDirectory("/A1/B1")방법 으로 현재 작업 경 로 를/A1/B1 폴 더 로 전환 합 니 다.
그러나 ftpClient.listNames("/A1/B2")의 절대 경 로 를 사용 하여/A1/B2 폴 더 의 파일 을 가 져 옵 니 다.현재 작업 디 렉 터 리 의 영향 을 받 지 않 습 니 다.
절대 경 로 는 반드시/로 시작 하 는'A1/B2'라 고 쓰 지 마 세 요.그러면 상대 경로 가 되 고 현재 경로 의 영향 을 받 습 니 다.상대 경로 인'A1/B2'가 절대 경로 로 바 뀌 는 것 은 바로 현재 작업 디 렉 터 리+상대 경로 입 니 다.즉,'/A1/B1/A1/B2 1/B2'입 니 다.
상대 경로 에 대해 서 는 아래 부분 에서 더 자세히 설명 하 겠 습 니 다.
public static void main(String[] args) {
    try {
        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(ftpIp, ftpPort);
        ftpClient.login(ftpName, ftpPws);
        ftpClient.enterLocalPassiveMode();

        ftpClient.changeWorkingDirectory("/A1/B1");
        System.out.println("      :" + ftpClient.printWorkingDirectory());

        String[] names = ftpClient.listNames("/A1/B2");
        System.out.println("/A1/B2      :" + Arrays.toString(names));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

출력 결과
      :/A1/B1
/A1/B2      :[/A1/B2/b21.txt, /A1/B2/b22.txt]

상대 경로
상대 경로 시작 에 없 음/
상대 경로 의 절대 경 로 는 현재 경로+상대 경로 입 니 다.
아래 의 실례 를 들 어 현재 작업 디 렉 터 리 를 A1 으로 전환 한 다음 에 changeWorkingDirectory("B1")를 통 해 B1 로 전환 합 니 다.그래서 들 어 오 는 것 은 상대 적 인 경로 이기 때문에 실제 전환 후의 경 로 는 현재 작업 경로+B1,즉/A1/B1 입 니 다.
마지막 으로 changeWorkingDirectory("/A1")를 통 해 A1 디 렉 터 리 로 전환 합 니 다.이때 절대 경로 로 전송 되 기 때문에 현재 작업 디 렉 터 리 의 영향 을 받 지 않 기 때문에 전환 후의 작업 경 로 는"/A1"이지"/A1/B1"이 아 닙 니 다.
public static void main(String[] args) {
    try {
        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(ftpIp, ftpPort);
        ftpClient.login(ftpName, ftpPws);
        ftpClient.enterLocalPassiveMode();
        
        ftpClient.changeWorkingDirectory("/A1");
        System.out.println("      :" + ftpClient.printWorkingDirectory());

        ftpClient.changeWorkingDirectory("B1");
        System.out.println("      :" + ftpClient.printWorkingDirectory());

        ftpClient.changeWorkingDirectory("/A1");
        System.out.println("      :" + ftpClient.printWorkingDirectory());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

출력 결과
      :/A1
      :/A1/B1
      :/A1

적용 방법
기본적으로 FTPClient 에서 파일 이나 폴 더 작업 에 관 한 모든 방법 은 절대적 인 경로 와 상대 적 인 경 로 를 적용 합 니 다.여러 개의 매개 변수 가 있 는 방법 은 두 가지 방식 으로 동시에 사용 할 수 있 습 니 다.예 를 들 어 rename("B1/test.txt","/A1/test.txt")은 비교적 흔히 볼 수 있 는 방법 을 보 여 줍 니 다.
  • changeWorkingDirectory
  • listNames
  • retrieveFile
  • retrieveFileStream
  • storeFile
  • storeFileStream
  • makeDirectory
  • rename

  • 총결산
    절대 경 로 는"/"로 시작 합 니 다.
    상대 경 로 는"/"로 시작 하지 않 습 니 다.
    상대 경로 에서 절대 경로 로 전환=현재 작업 디 렉 터 리+"/"+절대 경로
    절대 경 로 를 사용 하려 면 상대 경 로 를 사용 하지 않 는 것 을 권장 합 니 다.상대 경 로 를 사용 하면 현재 작업 중인 파일 경 로 를 한눈 에 알 수 있 기 때 문 입 니 다.상대 경 로 를 사용 하면 오류 가 발생 하기 쉽 습 니 다.FTP 작업 에서 changeWorkingDirectory 를 사용 하여 작업 디 렉 터 리 를 자주 전환 하기 때 문 입 니 다.자 르 면 마지막 까지 현재 작업 디 렉 터 리 가 무엇 인지 모 릅 니 다.필 자 는 일찍이 이곳 에서 구 덩이 를 밟 은 적 이 있 는데,서 류 를 잘못 삭제 하여 하마터면 하늘 에 제 사 를 지 낼 뻔 했다.
     
     
     

    좋은 웹페이지 즐겨찾기