无法写入文件的内容

无法写入文件的内容

问题描述:

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数组。无法写入文件的内容

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

file_name左右不能有引号。如果将它们放在一起,它会被解释为一个字符串,并将数据写入工作目录中名为“file_name”的文件。

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

...将是正确

最好的办法就是简简单单就:试试下面的代码:

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