2013-12-11 3 views
-3

File 인수가 하나있는 메서드입니다. 디렉토리 인 경우이 메소드는 그 아래에있는 모든 파일의 전체 크기 (바이트 수)를 반환합니다. 인수가 파일을 나타내는 경우 메서드는 해당 파일의 크기를 반환합니다. 반환 값은 long이어야하며 (int보다 큰 값 범위의 정수) File 객체가 나타내는 파일의 크기를 확인하려면 File 클래스의 length() 메서드를 사용합니다.이 메서드는 디렉터리뿐 아니라 파일에서는 작동하지 않습니다.재귀를 사용하여 파일 크기를 알아야합니다.

정말 도움이 되겠습니까? 이것을 알아낼 수 없습니다. 감사.

+5

지금까지 시도한 것을 보여주십시오. 그것이 작동하지 않는다면 그것은 괜찮습니다. 그것이 바로 SO입니다. 사람들이 누락 된 부분을보다 잘보고 올바른 방향으로 안내 할 수 있도록 도와줍니다. – FatalError

+0

@FatalError 숙제 문제 –

+0

freelancer.com이며 집안 일에 돈을 지불하십시오. – Makky

답변

1

숙제가 주어지면 답을 바로 알려주지는 않겠습니다.

메서드가 자체를 호출하는 메커니즘 인 경우 재귀. 분명히 메소드가 이것을 무의식적으로 수행한다면 결국에는 stackoverflow 예외를 얻게 될 것이므로 메소드가 자신을 호출하는 것을 멈추는 일종의 종료 조건이 필요하다. 당신이 파일을 발생할 때 경우

는 종료 조건은, 그래서 당신은이 같은 뭔가 코드해야합니다 :

이 같은 프로그램이 실행
int size(file) 
{ 
    if file represents a directory 
    { 

    loop over contents of the directory calling size method with each item and sum the return values 

    return the sum 

    } 
    else file represents a file 
    { 

    return file size 

    } 
} 

, 각 호출 스택에 추가됩니다 다음과 같은 파일 구조를 가지고있는 경우에 이렇게 :

+ root 
    + directory 1 
    + file 1 
    + file 2 
    + file 3 

이 패턴을 따를 것입니다 귀하의 스택 :

        size(file1)       size(file2) 
      -> size(directory) -> size(directory) -> size(directory) -> size(directory) -> size(directory) ->   -> size(file3) -> 
size(root)  size(root)   size(root)   size(root)   size(root)   size(root)   size(root) size(root)  size(root) 

일반적인 접근법을 보여 주면 Java로 변환 할 수 있도록 남겨 두겠습니다.