2012-02-04 8 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の内容は、名前と年齢の2つの属性を持つオブジェクトの配列です。ファイルの内容を書き込めません

答えて

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

正しいだろう

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

私はそれが動作するはずだと思います。 FileWriterのコンストラクタはFileをパラメータとして取るべきだと私は思います。

+0

ありがとうございます! –

0

file_nameを引用符で囲んではいけません。それらを置くと、文字列として解釈され、データは作業ディレクトリの "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

2行目のコードスニペットの行が欠落しています:fos.createNewFile(); –

+0

ここにファイルを追加していません。 'fos.isFile()'は '!fos.isDirectory()'を意味します; 2番目の例では 'if'文は冗長です。 'new FileWriter'の' append'パラメータに 'true'を追加するだけで*両方の* if文が作成され、2番目のbck全体が冗長になります。 'fos'は' File'型の変数の愚かな名前です。いずれも実際の質問には答えません。 – EJP

関連する問題