2009-05-18 4 views
4

임시 파일 (temp.txt)에 문자열을 쓰고 있는데, 그 파일을 닫은 후 삭제해야하는 내 awt 창의 버튼을 클릭 한 후 파일을 열어야합니다. 나는 이것을한다? 자바에서 열린 임시 파일

내가 자바에 임시 파일을 만드는 데 사용 된 코드입니다 :

File temp = File.createTempFile("temp",".txt"); 

FileWriter fileoutput = new FileWriter(temp); 
Bufferedwriter buffout = new BufferedWriter(fileoutput); 

답변

19

파일 만든이 :

File temp = File.createTempFile("temp",".txt"); 

는, 당신이 그렇게 JVM이 출구에있는 파일을 삭제합니다

temp.deleteOnExit(); 

전화를해야 ...

javadoc를 참조 삭제되지 않습니다
+0

버튼을 클릭 한 후 파일을 열 수 있으며 파일을 닫거나 myrunning 응용 프로그램을 닫으면 temp.deleteOnExit이 삭제됩니까? –

+0

나는 응용 프로그램 종료시 파일을 삭제하는 대신 파일을 삭제하려고 할 때 파일을 삭제하려고한다고 생각합니다. –

+0

그러면 어떤 파일에 데이터를 쓰고 닫을 수 있습니다. 2 - 후자는이 파일을 열고 창에 데이터를 표시합니다. 3 - 누군가가 창에있는 데이터를 보았을 때이 파일을 지우십시오 ... 알았습니까? – pgras

4

어떨까요 :

if (!temp.delete()) 
{ 
    // wasn't deleted for some reason, delete on exit instead 
    temp.deleteOnExit(); 
} 
당신은 아마 구글과 많은 예를 찾을 수 있습니다

button.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(ActionEvent event) { 
      fileOperation(); 
     } 
    } 
... 
private void fileOperation() { 
    ... do stuff with file ... 
} 

: 버튼을 클릭하면 작업을 수행하기

0

, 당신은 같은 코드 뭔가가 필요합니다. 일반적으로 익명 내부 클래스 코드는 짧아야하며 이벤트와 컨텍스트를 외부 클래스에 의미있는 작업으로 변환해야합니다.

현재 파일을 닫은 후 File.delete으로 수동으로 삭제해야합니다. 만약 당신이 정말로 원한다면, 닫을 후에 RandomAccessFile을 확장하고 close을 오버라이드 할 수 있습니다. 나는 delete-on-close가 JDK7에서 파일을 여는 모드로 간주되었다.

코드 에서처럼 파일에 쓰는 것만으로도 무의미합니다. 쓰기 스트림이 아닌 읽기 스트림을 닫은 후에 파일을 삭제하려고합니다. 가능하다면 임시 파일을 피하는 것은 나쁜 생각이 아닙니다.

+0

하지만 파일을 어떻게 열 수 있습니까? 버튼을 클릭합니다 (작업은 텍스트 파일을 두 번 클릭하는 것과 같습니다) 프로그램으로 어떻게 할 수 있습니까? –

+0

아, 버튼을 클릭하여 동작을 수행하는 방법은 무엇입니까? –