2012-02-04 106 views
0
package employee; 

import employee.nidhin.staples; 
import java.util.*; 
import java.io.*; 



public class Employee { 


public static void main(String[] args) 

{ 
    int j=3; 
    staples[] stemp = new staples[j]; 
    String file_name = "d:/personal/11636470/NetBeansProjects/Employee/src/employee/Xanadu.txt"; 


try 

{ 

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 

for (j=0;j<3;j++) 
     { 
      stemp[j] = new staples(); 

      System.out.print("Enter your name : "); 
      stemp[j].setName(reader.readLine()); 

      System.out.println("Enter your age : "); 
      stemp[j].setAge(Integer.parseInt(reader.readLine())); 


     } 


for (j=0;j<3;j++) 
     { 
      System.out.println("Employee number:" + j +" name:"+stemp[j].getName()+" Age:"+stemp[j].getAge()); 

     } 




reader.close(); // VERY IMPORTANT TO CLOSE 

System.out.println("Now writing the file to Xanadu.txt "); 

    PrintWriter out = new PrintWriter(
    new FileWriter("file_name")); 
    for (int i = 0; i < 3; i++) 
    { 
     out.println("Value at: "+ i + " = "+ stemp[i].getName()); 
    } 

    System.out.println("Successfully wrote to file"); 

    out.close(); 


} 
catch(java.io.IOException ex) 
{ 
    System.out.println("Error is " + ex.getMessage()); 
} 



} 
} 

程序執行成功,但是當我打開輸出文件Xanadu.txt時,什麼都看不到。有人可以指導我嗎?文件Xanadu.txt的內容是一個包含兩個屬性name和age的對象stemp數組。無法寫入文件的內容

回答

0
PrintWriter out = new PrintWriter(new FileWriter("file_name")); 

你傳遞一個字符串,上面寫着: 「FILE_NAME」, 嘗試這樣做:

PrintWriter out = new PrintWriter(new FileWriter(new File(file_name))); 

,我認爲它應該工作。由於FileWriter構造函數應該將File作爲參數,我想。

+0

感謝,它的工作! – 2012-02-04 18:57:49

0

file_name左右不能有引號。如果將它們放在一起,它會被解釋爲一個字符串,並將數據寫入工作目錄中名爲「file_name」的文件。

PrintWriter out = new PrintWriter(
new FileWriter(file_name)); 

...將是正確

0

最好的辦法就是簡簡單單就:試試下面的代碼:

fos=new File(filepath); 
if(fos.exists() && fos.isFile() && !fos.isDirectory()) 
{ 
    FileWriter fw=new FileWriter(fos); 
    BufferedWriter Bw= new BufferedWriter(fw); 
    Bw.append("i am appending text to the existing file"); 
} 
如果你想通過創建新的文件編寫,然後去文件優先搜索,如果不存在,創建並寫入相同的數據

使用如下:

fos=new File(filepath); 
if(!fos.exists() && !fos.isFile()) 
{ 
    FileWriter fw=new FileWriter(fos); 
    BufferedWriter Bw= new BufferedWriter(fw); 
    Bw.write("i am writing text to the existing file"); 
} 
+0

剛剛在第二個代碼片段中錯過了一行:fos.createNewFile(); – 2016-02-27 09:59:59

+0

此處不添加任何文件; ''fos.isFile()'暗示'!fos.isDirectory()';在第二個例子中,if語句是多餘的;僅僅爲'new FileWriter'的'append'參數增加'true'會使兩個if語句和整個第二個bck冗餘; 'fos'是'File'類型變量的一個愚蠢的名字;這些都不能以任何方式回答實際問題。 – EJP 2016-02-28 03:50:49