2016-08-30 5 views
-1

В настоящее время я создаю проект, который имеет систему имени пользователя и пароля, которая использует текстовые файлы. Чтобы попытаться сохранить мой проект, они находятся в одной и той же папке netbeans. Тем не менее, файлы, которые находятся там, находятся под src\classes\prototype1\textFiles, но файлы, редактируемые при добавлении пользователя, находятся под build\classes\prototype1\textFiles. Проблема заключается в том, что всякий раз, когда я перезапускаю netbeans, он идет только с исходных данных, которые у меня есть в папке src, а не на отредактированных данных из папки build.Редактирование исходных файлов Java

Код я использовал:

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 /' является чисто Java-кодом для компиляции. Вы не должны размещать там какие-либо файлы ресурсов. –

+1

Почему вы редактируете файл в папке 'build'? После того, как вы развернете код в файле .jar, файл не будет * * * файлом на жестком диске. Любой файл, который вы редактируете, должен быть * вне * иерархии кода приложения. – Andreas

+1

Ресурсы следует рассматривать только для чтения. Приложения обычно поставляются как .jar-файлы, и в этом случае вы не сможете писать на ресурс, потому что это не будет отдельный файл. (Кроме того, 'getResource' использует косые черты ('/') как разделители файлов на всех платформах, аргумент по существу является относительным URL.) – VGR

ответ

1

Это сочетание эффектов.

Файл, который вы адресуете, находится в папке classes: Эта папка является выходной папкой компилятора. Таким образом, он содержит содержимое для определения неопределенности, поскольку содержимое создается из папки src.

При запуске вашей IDE (NetBeans в этом случае), он очистит проект и перестроит классы, перезаписав ранее измененные пользовательские настройки.

Решение прост: не записывайте отредактированный файл в папку classes. Используйте другое место, например текущий каталог. Это, как правило, корень проекта для запуска IDE и может контролироваться надлежащим образом.

Возможно, вы захотите, чтобы местоположение файла было настроено где-то (командная строка, переменная среды, ...).

+0

Спасибо, я попробую это утром и сообщите тогда! –

Смежные вопросы