2011-05-03 5 views
0

를 작동하지 않는 파일로 나는 다음과 같은 코드가 있습니다쓰기 객체는

public static void logMessage(Object msg) { 
    if (outputStream != null) { 
     try { 
      outputStream.writeObject(msg); 
      outputStream.flush(); 
     } catch (IOException e) { 
      ErrorPopUp.setMessage(e.toString()).setVisible(true); 
     } 
    } else { 
     if ((logDirectory != null) && (writeLogName != null)) { 
      try { 
       setWriteFileName(writeLogName); 
       outputStream.writeObject(msg); 
       outputStream.flush(); 
      } catch (IOException e) { 
       ErrorPopUp.setMessage(e.toString()).setVisible(true); 
      } 
     } else { 
      ErrorPopUp.setMessage("Log file name not set!").setVisible(true); 
     } 
    } 
} 

이 사용

private static boolean setWriteFileName(String name) 
throws IOException { 
    writeLogName = name; 

    if (logDirectory != null) { 
     try { 
      writeLogFile = new File(name); 
      writeLogFile.createNewFile(); 
      outputStream = new ObjectOutputStream(
        new BufferedOutputStream(
        new FileOutputStream(
        writeLogFile))); 

      return true; 
     } catch (IOException e) { 
      throw e; 
     } 
    } else { 
     ErrorPopUp.setMessage("Log directory name not set!").setVisible(true); 
     return false; 
    } 
} 

, 파일은 내가 할 것으로 예상처럼 생성됩니다,하지만 아무것도 그것으로 기록되지 도착을 .
코드에서 오랫동안 찾고 있기 때문에 필자가 실종되었다는 것이 확실합니다.)
정말 조언 해 주시면 고맙겠습니다.


편집 :

public static void stopLogging() { 
    try { 
     if(outputStream != null){ 
      outputStream.close(); 
     } 
    } catch (IOException e) { 
     ErrorPopUp.setMessage(e.toString()).setVisible(true); 
    } 

    if(writeLogFile != null){ 
     writeLogFile.setReadOnly(); 
    } 
    outputStream = null; 
} 
+0

당신이 할 일은 던질 것이라면 예외를 잡을 필요가 없습니다. 디버거를 사용하여이 단계를 수행하면 문제가 무엇인지 분명히 알 수 있습니다. –

+0

문자열이 아닌 객체를 기록 하시겠습니까? – Friesgaard

+0

나는 이미 여러 번 디버깅을 시도했다. 예외는 단지 자리 표시 자일 뿐이며 대체됩니다. 그것을 디버깅, 잘 실행하는 것,하지만 아무것도 끝에 있습니다. 물론 나는 물건을 닫고있다. 이제이 코드를 추가하겠습니다. – Beasly

답변

1

그것은 (정적) TRAP입니다! 나는 ObjectOutputStream outputStream도 정적이라고 내기!

+0

당신이 옳다는 정적입니다. 안 그래야합니까? 것은 내 코드가 아니라 기존 프로젝트에 몇 가지 요소를 추가하는 것입니다 ... – Beasly

+0

OK, 문제는 3 가지 정적 메서드 만 게시 했으므로 문제를 재현하고 수정할 수 없습니다. 가능하다면'메인 '클래스를 게시하여 문제를 일으킬 수 있습니다. – bpgergo

+0

흠 ... 싶습니다만 다른 부분의 일부이며 홀 코드를 게시 할 수 없으므로 걱정됩니다. 다른 사람에게 정보를 제공하려면 어떻게해야합니까? 'logMessage'는 외부에서 호출되었습니다. 의도적으로 파일에 게이트웨이하는 것입니다. 읽고 쓰기. 이 프로젝트에서 완벽하게이 방법을 사용하는 또 다른 빌드가 있습니다 ... – Beasly