2014-11-19 5 views
0

파일에 쓰고 같은 파일에서 읽으려고합니다. 출력은 "오류 : I/O 예외"입니다. 프로그램이 IOException을 잡는다는 것을 의미합니다.Java 파일 I/O : 항상 I/O 예외가 발생하는 이유는 무엇입니까?

public class fileIO { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     try 
     { 
      File file = new File("io.txt"); 
      BufferedReader read = new BufferedReader(new FileReader(file)); 
      BufferedWriter write = new BufferedWriter(new FileWriter(file)); 

      String needs = "This is going to the file"; 
      write.write(needs); 

      String stuff = read.readLine(); 
      while(stuff != null) 
      { 
       System.out.println(stuff); 
       stuff = read.readLine(); 
      } 

     } 
     catch(IOException e) 
     { 
      System.out.println("Error: I/O Exception"); 
     } 
     catch(NullPointerException e) 
     { 
      System.out.println("Error: NullPointerException"); 
     } 
    } 
}' 
+3

당신은 어떤 예외를받을 수 있나요? 'FileNotFound'? – MadProgrammer

+3

stacktrace를보고 질문에 추가해야합니다. catch 블록에서'e.printStackTrace()'를 호출함으로써 간단히 처리 할 수있다. – mkobit

+0

스택 추적을 인쇄하면 무엇이 잘못되었는지 자세히 알 수 있습니다. 그냥'main'이 예외를 잡는 대신에 예외를 던지게하십시오. –

답변

0

당신은 읽고 동시에 파일에 쓸 수 없습니다, 이것은 IOException 발생합니다. 파일에 액세스 할 수있는 항목을 닫은 후에 다른 항목으로 액세스해야합니다. BufferedReader으로 파일에 액세스하기 전에 BufferedWriterclose() 메서드를 호출하면 트릭을 수행해야합니다.

편집 : 다른 언급이는 또한, 당신은 예외를 디버깅 할 때 크게 도움이 프로그램에서 발생한 위치를 확인할 수 e.printStackTrace()를 사용할 수 있습니다.

편집 : 설명이 명확 해지면서 Windows를 비롯한 일부 파일 시스템의 경우는 그렇습니다. 그것은 가장 가정용 문제처럼 보였던 것으로 당신을 제한하는 파일 시스템을 사용하고 있었다는 나의 가정이었습니다.

+0

Windows에서 * 할 수 없습니다. http://stackoverflow.com/a/2751799/995891 – zapl

+0

@zapl 고맙습니다. 답을 수정했습니다. – user3424612

0

BufferedWriter를 닫은 곳으로 BufferedReader를 이동하여 트릭을 수행했습니다. 도와 주셔서 감사합니다.

공용 클래스 파일 입출력 {

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    try 
    { 
     File file = new File("io.txt"); 
     BufferedWriter write = new BufferedWriter(new FileWriter(file)); 

     String needs = "This is going to the file"; 
     write.write(needs); 
     write.close(); 

     BufferedReader read = new BufferedReader(new FileReader(file)); 

     String stuff = read.readLine(); 
     while(stuff != null) 
     { 
      System.out.println(stuff); 
      stuff = read.readLine(); 
     } 
     read.close(); 
    } 
    catch(IOException e) 
    { 
     System.out.println("Error: I/O Exception"); 
     e.printStackTrace(); 
    } 
    catch(NullPointerException e) 
    { 
     System.out.println("Error: NullPointerException"); 
     e.printStackTrace(); 
    } 
} 

}