2012-11-29 2 views
1

Java에서 파일을 삭제할 수 없습니다. 내 프로그램에서, 나는 파일을 만들고, 그것으로 무언가를 한 다음, 그것을 삭제해야한다. myFile.delete()를 호출하면 false를 반환합니다. 내가 삭제하려고하는 경로를 확인하고 그 올바른, 나는 또한 Windows 7에서 일하고 있어요 관리자 권한이 있습니다. 여기에, 아주 간단한 코드의 내 조각 :Java에서 파일을 삭제할 수 없습니다.

File aux = new File(System.getProperty("user.dir")+"//tmp.ps"); 

CreatePostScript(aux.getAbsoluteFilePath()); 
SendToPrinter(); 

try{ 
    aux.delete(); 
} 
catch(SecurityException ex){ 
    ex.printStackTrace(); 
} 

편집, 나는 파일 개체의 일부 속성을 읽고 : 파일에 대한 처리를 수행하는 것처럼

canRead() returns false 
canWrite() returns false 
exists() returns false 
getPath() returns the_actual_path_of_the_file 
isFile() returns false 
+1

예외가 무엇입니까 – developer

+0

그는 예외가 없으므로 'delete()'는 false를 반환합니다. – looper

+0

가능성 duplicate http://stackoverflow.com/q/991489/668970 – developer

답변

1

이 가능성이있는 OutputStream 그 아직도 열려 있습니다. 파일을 삭제하기 전에 out.close();으로 전화하십시오.

+0

어떤 스트림? 난 그냥 파일을 만들고 그 경로를 사용하여 Runtime.getRuntime() 명령을 실행합니다 .exec – Joel

+0

좋아, 파일을 삭제하려고하기 전에 존재합니까? – Reimeus

2

IDE 내부에서 그렇게하고 있습니까? 아마도 IDE가 파일 핸들을 잡고있을 것입니다. Unlocker을 다운로드하고 핸들을 누가 잡고 있는지 확인하십시오.

+0

난 자물쇠에 연결을 위해 Netbeans – Joel

+0

+1을 사용하고 있습니다. 감사! –

+0

Unlocker가 프로그램이 파일을 잠그지 않는다고 말합니다. – Joel

1

user.dir 속성 생각을 -D 명령 줄 인수로 제공했는지 확인하십시오. 그리고, 난 당신이 당신이 삭제되기 전에 스트림을 닫을되지 ​​않은 참조 코드에 File.pathSeparator 대신 //

+0

팁 주셔서 고마워요,하지만 그게 문제가 아니라는 생각, getPath() 함수가 반환하는 파일 경로가 올바른 것입니다. – Joel

+1

왜 파일 이름 앞에'/'를 추가합니까? 윈도우 파일 구분자는'\\\'입니다. – ice

0

사용하여 스트림을 닫고 파일을 삭제합니다.

+0

어떤 스트림입니까? 난 그냥 파일을 만들고 그 경로를 사용하여 Runtime.getRuntime() 명령을 실행합니다 .exec – Joel

+0

파일 생성 후 메소드를 호출하는 경우 해당 메소드는 무엇을합니까? – developer

+0

CreatePostScript() 메소드는 exec() 함수를 호출합니다. 인수로서의 파일 패스 메서드 자체가 파일에 대한 작업을 수행하지 않습니다. File 클래스를 사용하여 File 클래스를 사용합니다. – Joel

1

Java 7의 NIO2 API을 사용하는 것이 좋습니다. 성공 값을 반환하는 대신 무언가 작업을 중단하면 실제로는 throws an exception이됩니다.

+1

다른 응답에서 제안 된대로 Unlocker를 사용했으며 파일이 잠겨 있지 않습니다. – Joel

+0

고마워, 나는 그걸 알아 차리지 못했다. 대답의 일부를 삭제했습니다. –

관련 문제