2014-01-22 4 views
3

특정 경로의 서버에 파일을 업로드하는 Java 프로그램을 작성 중입니다. sftpjSch을 사용하고 있습니다.경로가 서버에 존재하는지 Java에 있지 않은지 확인하십시오.

파일을 업로드하기 전에 주어진 디렉토리가 서버에 있는지 확인하고 싶습니다.

if(path exists) 
    //upload file to the location 
else 
    //create the directory and then upload the file. 

경로가 존재하는지 여부를 어떻게 확인합니까?

참고 : 나는 서버에서 원격 디렉토리의 존재를 확인하는 클라이언트 코드를 실행하고. 따라서 File.exists()을 제안하지 마십시오.

+0

새 파일 ("") .exists(); –

+0

@BrianRoach - OP는 ftp를 통해 클라이언트 프로그램에서 server_에있는 파일의 존재를 확인하려고합니다. 'File.exists()'는 그 일을하지 않습니다. –

+0

그럴 수는 있지만 정직하게 말하면 쓰여지는 방식을 잘못 읽기 쉽습니다. 나는 당신이 의미 한 것을보기 위해 두 번 읽어야했다. 나는 첫 번째 문장을 무시했다. –

답변

9

Documentation for ChannelSftp 당신이 단지 lstat 디렉토리 수 있습니다 나타납니다 :

SftpATTRS attrs = channelSftp.lstat(path); 

그 예외가 발생하면, 그것은 존재하지 않습니다. 그런 다음 channelSftp.mkdir(path)을 사용하여 만들 수 있습니다.

+0

좋은 시도하지만 경로가 존재하지 않는 경우 null을 반환하지 않지만 예외 (해당 파일 없음)를 throw합니다. –

+0

@AnkitLamba 그래서 ... 당신의 대답이 있습니다. 문서는 내가 정말로 알 수없는 라이브러리에 대해서는 너무 끔찍하며 그의 코드를 빨리 읽는 것이 도움이되지 못했습니다 (정확하게 자체 문서화하지는 않습니다). (결과가 변경되도록 편집 됨) –

+1

@AnkitLamba - 예외를 catch하여 디렉토리가 존재하지 않음을 감지 할 수 있습니다. –

0

나는이 라이브러리에 익숙하지 않은,하지만이 예제 코드에서 :이 그것의 존재 여부를 알려해야하는 파일을 검색

ChannelSftp c = ..; 
c.ls('<path>') 

을 사용할 수 있습니다처럼 http://www.jcraft.com/jsch/examples/Sftp.java.html 것 같습니다. 읽기

관련 문제