2013-05-04 4 views
1

"파일 또는 폴더의 상대 경로를 전달하여 파일을 가져 오는 방법"을 이해하려고합니다. . 다음은 예입니다java에서 상대 경로를 전달하여 파일을 얻는 방법은 무엇입니까?

CODE : 내가 올바른 상대 경로를 통과 할 수 있었다, 그래서 여기에

public class somex { 
    public static void main { 
     String fileName = System.getProperty("user.dir"); <---This gives me path for the current working directory. 
     File file = new File(fileName + "../../xml_tutorial/sample.xlsx"); 
     System.out.println(file.getCanonicalPath());   <---This gives me path for the file that is residing in folder called "xml_tutorial". 
    } 
    } 

    >>>> 

, 나는 파일 위치를 알고있다. 그리고 파일 경로를 인쇄 할 수있었습니다. "sample.xlsx"를 삭제하고 위의 코드를 실행했습니다. 실패하지 않으면 경로 이름을 제공하며 파일이 존재할 때 (즉 삭제 전)와 동일한 경로입니다. 어떻게 가능합니까? 나는 여기서 예외를 기대하고있다. 왜 예외를 던지지 않는거야?

둘, "../../xml_tutorial/samp.*"와 같이 파일 이름에 정규 표현식을 사용하고 싶습니다. 하지만이 일을하지 않으며 그것은 IOException을 제공합니다. sample.xlsx 파일을 식별 할 수없는 이유는 무엇입니까? (참고 : 파일이 존재하고 "sample.xlsx"라는 이름의 파일이 하나만 있는지 확인하는 경우입니다.)

+0

1. file.exists() 메소드를 사용하여 파일을 확인할 수 있습니다. 2. java는 와일드 카드를 지원하지 않으므로 여기에서 답을 찾을 수 있습니다. http://stackoverflow.com/questions/794381/how-to-find-files-that-match-a-wildcard-string-in-java –

+1

** 질문 당 하나의 ** 질문. –

답변

3

"sample.xlsx"를 삭제하고 위 코드를 실행했습니다. 실패하지 않으면 경로 이름을 제공하며 파일이 존재할 때 (즉 삭제 전)와 동일한 경로입니다. 어떻게 가능합니까? 나는 여기서 예외를 기대하고있다. 왜 예외를 던지지 않는거야?

File 파일이 실제로 존재하는지 상관하지 않습니다. 단지 경로을 해결합니다. 경로

/home/tjc/a/b/c/../../file.txt

을하기 위해 존재 ... 그리고 당신이 알고 싶은 경우에 정규의 형식

/home/tjc/a/file.txt

으로 바꿀 수있는 파일에 대한 필요가 없습니다 여부를 해당 경로의 파일 실제로 존재하는 경우 exists() method을 사용할 수 있습니다. 두 번째에


관련없는 질문 :

, 나는 같은 파일 이름 정규 표현식을 사용하려면 "../../xml_tutorial/samp.*". 하지만이 일을하지 않으며 그것은 IOException을 제공합니다. sample.xlsx 파일을 식별 할 수없는 이유는 무엇입니까?

와일드 카드를 지원한다고 말하는 사람은 File documentation입니다. 검색을 수행하려면 list(FilenameFilter) 또는 listFiles(FilenameFilter)FilenameFilter 구현 또는 listFiles(FileFilter)FileFilter 구현을 사용해야합니다.

관련 문제