2014-07-16 2 views
0

좋아, 이제 머리카락을 꺼내기 시작할 것입니다. 나는 파일 입력이 약간 까다 롭다라고 생각했다. 그러나 제로 남자는 그 다음 파일 출력이다. 개체에 저장된 좌표 배열을 파일에 쓰려고합니다. C++에서 이것은 쉬운 말투 였지만, 하나님의 사랑 때문에 나는 이것을 알 수 없습니다.파일 IO 용 PrintWriter 사용

public static void outFile(int intersectionsIndex, Coordinate arg[], Coordinate avgPoint) { 

    File file = new File("resource/result.txt"); 
    file.getParentFile().mkdirs(); 

    PrintWriter writer = new PrintWriter(file); 
    int i = 0; 
    while (i < intersectionsIndex) { 
     writer.print(arg[i].getX()); 
     writer.print(" "); 
     writer.println(arg[i].getY()); 
     i++; 
    } 
    writer.print("Predicted Coordinate: "); 
    writer.print(avgPoint.getX()); 
    writer.print(" "); 
    writer.println(avgPoint.getY()); 
    writer.close(); 

    return; 
} 

내가 사용하는 IO의 방법에 관계없이 계속 동일한 오류가 발생합니다. 비슷한 문제가 있지만 여기서는 쓸모없는 게시물을 몇 개 따라갔습니다. 어떤 제안이나 다른 방법? 나는 아마 뭔가를 놓치고 있습니다.

편집 : 죄송합니다 오류가 "의 PrintWriter 작가 = newPrintWriter (파일)입니다

Error:(83, 30) java: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown 

입니다 라인

UPDATE :.. 아래 문제 해결 근무 코드 :

public static void outFile(int intersectionsIndex, Coordinate arg[], Coordinate avgPoint) throws Exception{ 

    File file = new File("resource/result.txt"); 
    file.getParentFile().mkdirs(); 

    PrintWriter writer = new PrintWriter(file); 
    int i = 0; 
    while (i < intersectionsIndex) { 
     writer.print(arg[i].getX()); 
     writer.print(" "); 
     writer.println(arg[i].getY()); 
     i++; 
    } 
    writer.print("Predicted Coordinate: "); 
    writer.print(avgPoint.getX()); 
    writer.print(" "); 
    writer.println(avgPoint.getY()); 
    writer.close(); 

    return; 
} 
+2

당신이지고 어떤 오류? – Braj

+6

코드 중간에 (잠재적 인) 무한 루프가 있습니다. 아마도 'i'를 증가시킬 것입니까? – initramfs

+0

올바른 위치에 파일이 있습니까? – Braj

답변

3

그것은 당신이 실제로 컴파일 타임 오류가 아닌 런타임 오류가 얻을 오류처럼 보이는보십시오.

생성자 PrintWriter(File) 그러므로 당신이 중 하나가 try ... catch 블록의 호출을 둘러싸고, 또는 나중에 잡으려고 방법의 throws 선언에 그 예외를 선언해야하는이 서명에 FileNotFoundException을 확인 선언합니다.

은 참조 :

1

동일한 코드가 다른 시스템에서 작동하지 않을 수 있으므로 항상 절대 경로를 피하십시오.

resources 폴더 아래에 프로젝트 안에 배치하는 것이 좋습니다.

파일 위치에 따라 시도해 볼 수 있습니다.

// Read from resources folder parallel to src in your project 
File file1 = new File("resources/results.txt"); 

// Read from src/resources folder 
File file2 = new File(getClass().getResource("/resources/results.txt").toURI()); 

당신은 while 루프에서 i을 증가하는 것을 잊지 수 있습니다. 무한 루프를 피하려면 i++을 추가하십시오.

while (i++ < intersectionsIndex) {...} 

또는

while (i < intersectionsIndex) { 
    ... 
    i++; 
} 
+0

감사합니다. 나는 실제로 그것을 자원으로 사용했지만, 그때 그것을 가지고 어리석은 후에 이곳에 왔습니다. – idaWHALE

+0

"// Read from ..."OP는 파일을 읽지 않고 파일을 쓰고 있습니다. –

+0

@DavidConrad뿐만 아니라 먼저 작성해야합니다. – Braj