2016-08-30 3 views
-1

현재 프로젝트를 만들고 있는데, 텍스트 파일을 사용하는 사용자 이름과 패스워드 시스템이 있습니다. 시도하고 내 프로젝트를 조직 유지, 그들은 같은 netbeans 폴더 내에 있습니다. 그러나 거기에있는 파일은 src\classes\prototype1\textFiles이지만 사용자를 추가 할 때 편집중인 파일은 build\classes\prototype1\textFiles입니다. 이것은 netbeans를 다시 시작할 때마다 src 폴더에있는 원본 데이터에만 적용되고 build 폴더에는 편집 된 데이터가 저장되지 않습니다.자바 소스 파일 편집

내가 사용하는 코드는 다음과 같습니다

try { 
    File f = new File(getClass().getResource("textFiles\\PasswordScreen.txt").toURI()); 
    f.setWritable(true); 
    FileWriter w = new FileWriter(f); 
    BufferedWriter writer = new BufferedWriter(w); 
    wipeFile(f); 
    for (int i = 0; i <= length; i++){ 
     writer.write(user[i].getUsername()); 
     writer.newLine(); 
     writer.write(user[i].getPassword()); 
     writer.newLine(); 
     writer.write(Integer.toString(user[i].getState())); 
     writer.newLine(); 
     writer.write("-"); 
     writer.newLine(); 
    } 
    writer.close(); 
    f.setReadOnly(); 
} catch(Exception e){System.out.println("error writing to file");} 
+0

'src /'에있는 것은 순수하게 컴파일 할 자바 코드입니다. 리소스 파일을 여기에두면 안됩니다. –

+1

왜'build' 폴더에있는 파일을 편집하고 있습니까? .jar 파일에 코드를 배포하면 해당 파일은 하드 드라이브의 파일이 아니어도됩니다. 수정하는 파일은 앱 코드 계층 외부에 * 있어야합니다. – Andreas

+1

리소스는 읽기 전용으로 간주되어야합니다. 응용 프로그램은 일반적으로 .jar 파일로 제공됩니다.이 경우 별도의 파일이 아니기 때문에 리소스에 쓸 수 없습니다. (또한'getResource'는 모든 플랫폼에서 파일 분리 자로 슬래시 ('/')를 사용하며, 인수는 본질적으로 상대 URL입니다.) – VGR

답변

1

이 효과의 혼합이다.

주소 지정 파일은 classes 폴더에 있습니다.이 폴더는 컴파일러의 출력 폴더입니다. 따라서 콘텐츠에는 src 폴더에서 생성되므로 휘발성 정의가 포함되어 있습니다.

IDE (이 경우 NetBeans)를 시작하면 프로젝트를 정리하고 클래스를 다시 작성하여 이전에 편집 한 사용자 설정을 덮어 씁니다.

해결책은 간단합니다. 편집 한 파일을 classes 폴더에 쓰지 마십시오. 다른 위치 (예 : 현재 디렉토리)를 사용하십시오. 이것은 일반적으로 IDE 시작을위한 프로젝트 루트이며 적절히 제어 할 수 있습니다.

어딘가에 파일의 위치를 ​​구성 할 수 있습니다 (명령 줄, 환경 변수 등).

+0

고마워요. 아침에 이것을 시험해보고 다시보고 할께요. –