2012-01-13 3 views
5

오디오 레코더 용 파일을 만들려고하지만이 파일은 계속 임의의 이름을 갖습니다. 이 작업을 수행하기가 어렵 기 때문에보다 의미있는 이름으로 파일을 만든 후에 파일의 이름을 바꾸고 싶습니다.File.renameTo()는 true를 반환하지만 파일의 이름이 변경되지 않았습니다.

그러나 renameTo이 true를 반환하더라도 파일의 이름이 변경되지 않았습니다.

여기 뭔가 잘못 되었나요?

outfile = File.createTempFile(amount + "_alarmsave", ".3gp", 
        storageDir); 

      System.out.println("Old file: "+outfile.getAbsolutePath()); 

      File newFile = new File(outfile.getParent(), "alarmsave_" + amount + ".3gp"); 

      System.out.println("new file: "+newFile.getAbsolutePath()); 

      if(outfile.renameTo(newFile)){ 
       System.out.println("Succes! Name changed to: " + outfile.getName()); 
      }else{ 
       System.out.println("failed"); 
      } 

로그 캣 출력 :

01-13 18:27:40.264: I/System.out(22913): Old file: /mnt/sdcard/Personal Alarm/13_alarmsave1623959934.3gp 
01-13 18:27:40.264: I/System.out(22913): new file: /mnt/sdcard/Personal Alarm/alarmsave_13.3gp 
01-13 18:27:40.284: I/System.out(22913): Succes! Name changed to: 13_alarmsave1623959934.3gp 

답변

13

RenameTo은 실제 파일의 이름을 변경, 그것은 File 객체를 변경하지 않습니다. .exists()을 호출하면 새 파일이 있고 이전 파일은 존재하지 않는 것을 알 수 있습니다.

File 클래스가 파일 시스템의 실제 파일이 아닌 추상 경로 을 나타 내기 때문입니다. 아이디어는 File.renameTo이 주어진 경로의 파일 시스템 항목에 새로운 이름을 부여한다는 것입니다. 경로 자체는 변경되지 않습니다.

+0

그건 ... 흠. 생각할 거리. 개체 자체의 이름 자체가 변하지 않는 것은 이상합니다. 당신은 맞았습니다, 그 이름은 파일 시스템 자체에서 바뀌 었습니다. 정말 고마워요! –

+0

그럼 실제 파일의 이름을 어떻게 바꿀 수 있습니까? 새 파일 경로를 인쇄 할 때와 동일한 동작이 발생하지만 새 경로를 얻지 만 파일 이름이 변경되지 않았습니까? 어떤 아이디어? –

+0

'renameTo'는 실제 파일의 이름을 변경합니다. File 객체의 이름은 변경되지 않습니다. – Joni

관련 문제