1

Я использую Properties объект с FileInputStream() и FileOutputStream() метод чтения/записи свойств из/в файл .properties в java.В java `.properties` файл ничего не отображается в режиме редактирования

Его работа прекрасна (я тоже могу писать и читать). Но когда я открываю файл .properties в редакторе, он ничего не показывает в нем. Его запутывает, если я могу читать и писать тогда, почему значения не отображаются в этом файле?

Вот полный код

String username = uName.getText().trim(); 
String pass = uPass.getText().trim(); 

// Read properties file. 
    Properties pro = new Properties(); 
    try { 
     pro.load(new FileInputStream("conf.properties")); 
     pro.setProperty("user", username); 
     pro.setProperty("pass", pass); 
     pro.store(new FileOutputStream("conf.properties"), null); 

     String user = pro.getProperty("user"); 
     System.out.println(user); 
     System.out.println("successful ......."); 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
+2

Мое предположение о том, что файл, который вы смотрите на в редакторе не тот, который вы используете для сохранения/загрузки. Имейте в виду, что ваш код использует имя файла относительно текущего рабочего каталога вашей программы ... –

+0

Вы запускаете свою программу из среды IDE? который? –

+0

@TimothyTruckle yes in Netbeans –

ответ

0

Файлы не покраснел, пока вы не закроете их.

Вы должны изменить свой код, чтобы включить вызов метода .close() в поток ввода файла и закрыть выходной поток, потому что хранилище методов вызывает вызов .flush(), но не закрывается, так что ваша файловая система не покажет вам изменение:

String username = uName.getText().trim(); 
String pass = uPass.getText().trim(); 

// Read properties file. 
Properties pro = new Properties(); 
try { 

    final FileInputStream fileInputStream = new FileInputStream("conf.properties"); 
    pro.load(new FileInputStream("conf.properties")); 
    fileInputStream.close(); 
    pro.setProperty("user", username); 
    pro.setProperty("pass", pass); 
    String user = pro.getProperty("user"); 
    System.out.println(user); 

    final FileOutputStream fileOutputStream = new FileOutputStream("conf.properties"); 
    pro.store(fileOutputStream, null); 
    fileOutputStream.close(); 
    System.out.println("successful ......."); 

} catch (IOException ex) { 
    ex.printStackTrace(); 
} 

Вам нужно только написать код, извлекать свойства в формате, который вы хотите хранить их. Это должно делать свое дело. (Я закодирован непосредственно здесь, извините, если есть ошибка)

РЕДАКТИРОВАНИЕ: Я просто закодирован, он работает:

public static void main(String[] args) { 
    String username = "bla"; 
    String pass = "blabla"; 

    // Read properties file. 
    Properties pro = new Properties(); 
    try { 
     File file = new File("/tmp/conf.properties"); 
     file.createNewFile(); 
     final FileInputStream fileInputStream = new FileInputStream(file); 
     pro.load(fileInputStream); 
     fileInputStream.close(); 
     pro.setProperty("user", username); 
     pro.setProperty("pass", pass); 
     String user = pro.getProperty("user"); 
     System.out.println(user); 

     File toClose = new File("/tmp/conf.properties"); 
     final FileOutputStream fileOutputStream = new FileOutputStream(toClose); 
     pro.store(fileOutputStream, null); 
     fileOutputStream.close(); 

     System.out.println("successful ......."); 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 

Это выход:

cat /tmp/conf.properties 
#Sun Nov 20 18:23:58 CET 2016 
user=bla 
pass=blabla 

Может быть, проблема находится в другом месте? попробуйте скомпилировать, упаковки, а затем запустить его в терминале (Java -jar ...)

+0

его все тот же. –

+1

Check my edditing;) –

+0

ваш код работает, но в режиме редактирования в файле свойств все еще нет. –

-2

setProperty просто обновляет набор свойств, он не записывает файл. Вы должны позвонить в магазин (OutputStream out, String), чтобы фактически записать файл на диск, и это время, когда вам придется «блокировать» файл.

выписка принял ответ в this link

+1

OP вызывает магазин –