2013-06-05 58 views
1

我写了一个程序,读取150个文件弗罗马文件夹,它创建一个新的文件夹并创建这些150个文件,并写入内容..如何使用FileWriter写入文件?

继承人我的代码:

package TestPackage; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Scanner; 

public class EmployeeSorting { 
    // path till 'employee files' folder. 
    File folder = new File("D:\\Arthi iyer\\employee files"); 

    // listFiles() : list all the files in a folder. 
    File[] listOfFiles = folder.listFiles(); 

    ArrayList<Employee> emp = new ArrayList<Employee>(); 
    String[] split_input = null; 

    public void sortFiles() throws IOException { 

     for (File file : listOfFiles) { 
      Scanner scanner = new Scanner(file); 

      String input = scanner.nextLine(); 
      split_input = input.split("="); 
      int id = Integer.parseInt(split_input[1]); 

      String input1 = scanner.nextLine(); 
      split_input = input1.split("="); 
      String name = split_input[1]; 

      String input2 = scanner.nextLine(); 
      split_input = input2.split("="); 
      int age = Integer.parseInt(split_input[1]); 

      emp.add(new Employee(id, name, age)); 

      FileReader fr = new FileReader(file); 

      BufferedReader br = new BufferedReader(fr); 
      File idFile = new File("D:\\Arthi iyer\\employee id" + "\\" + id 
        + ".txt"); 
      FileWriter idcopy = new FileWriter(idFile); 

      int idbuffersize1; 
      char[] a = new char[1000]; 

      while ((idbuffersize1 = br.read(a)) > 0) { 

       idcopy.write(a, 0, idbuffersize1); 

      } 

     }// for ends 
    }// method ends 

    public void sortByID() { 

     System.out.println("----Sort By Employee Id----"); 
     Collections.sort(emp, new EmployeeSortById()); 
     printEmployees(emp); 
    } 

    // print employee 
    public void printEmployees(ArrayList<Employee> emp) { 
     for (Employee e : emp) { 

      System.out.println("Id->" + e.getEmp_id() + " " + " Name-> " 
        + e.getEmp_name() + " " + "age-> " + e.getAge()); 
     } 
    } 

    public static void main(String[] args) throws IOException { 

     File id_folder = new File("D:\\Arthi iyer\\employee id"); 
     id_folder.mkdir(); // mkdir() for making directory. 

     EmployeeSorting sort = new EmployeeSorting(); 
     sort.sortFiles(); 
     // sort.sortByID(); 

    } 

} 

我的问题是文件正在被创建到文件夹,但内容没有被写入..请指导我

+0

您是否尝试为* one *文件执行此操作?它工作吗? – 2013-06-05 06:47:03

+0

不,但当我试图写内容使用for循环控制台中得到打印,但没有写入文件..有没有问题与我的作家? – user2412380

回答

3

你没有关闭作家,所以所有的数据可能只是停留在内部缓冲区。

理想情况下,使用try-with-resources语句,或在finally块中关闭它。

int idbuffersize1; 
char[] a = new char[1000]; 
FileWriter idcopy = new FileWriter(idFile); 
try { 
    while ((idbuffersize1 = br.read(a)) > 0) { 
     idcopy.write(a, 0, idbuffersize1); 
    } 
} finally { 
    idcopy.close(); 
} 

顺便说一句,我个人不喜欢FileWriter,因为它总是使用系统默认的编码,而不是让你指定的编码。我更喜欢使用包裹在OutputStreamWriter中的FileOutputStream

+0

ohh thanxx .. :)它的工作现在:) :) :) – user2412380

0

试试这个

FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
      BufferedWriter bw = new BufferedWriter(fw); 
      bw.write(content); 
      bw.close(); 
0

你没有刷新或关闭文件,因此,内容不能被写入文件。

另外,我强烈建议您使用BufferedWriterPrintWriter来写正常文本。

相关问题