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是在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

檢查我的edditing;) –

+0

您的代碼正在工作但在編輯模式下,屬性文件中仍然沒有任何內容。 –

-2

setProperty只更新屬性集,它不寫入文件。您必須致電商店(OutputStream輸出,String標題)方法才能將文件實際寫出到磁盤,那就是您必須「鎖定」文件的時間。

支票this link

+1

OP正在調用存儲 –