好久没写java了,今天有个需求比较急,也来不及研究了,上来请教一下。
把一个目录下的文件名全取到然后写到一个list.txt中去。现在文件名可以全部取到了,放在一个array里面,怎么写到txt文件里呢?急问。最后list.txt里面就是这种格式:c:\test\abc.out
c:\test\bbb.txt
c:\test\mem.xml
每个文件名要一行,谢谢

解决方案 »

  1.   

    参考下http://topic.csdn.net/u/20110810/11/afdc5f0f-1af8-40c1-b6b8-3e6b4b3f06c2.html
      

  2.   

     调用 writeTxtFile 方法即可
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.ArrayList;
    public final class FileUtil { //删除指定的文件
    public static boolean delete(String filepath)
        {
    File fp = null;
    try
    {
            if (filepath == null || filepath.trim().length() == 0)
            {
              return false;
            }

            fp = new File(filepath);
            if (!fp.exists())
            {
              throw new IllegalArgumentException("源文件目录:'"+filepath+"'不存在,请确认目录");
              //return false;
            }
            
            return fp.delete();
    }catch(Exception e)
    {
    e.printStackTrace();
    return false;
    }
        } //检查文件是否存在
     public static boolean checkFileExist(String filepath) {
    if (filepath == null || filepath.trim().length() == 0)
    return false; File fp = new File(filepath);
    if (!fp.exists())
    return false;
    if (!fp.isFile())
    return false; return true;
    }
        // 向文件写文本内容
        public static boolean writeLineFile(RandomAccessFile file, String lineTxt, boolean isRW)
        {
            boolean result = true;
            try
            {
                String str = lineTxt + "\r\n";
                byte[] strTxt = str.getBytes();
                if (isRW)
                {
                    file.write(strTxt);
                }
            } catch (Exception e)
            {
             e.printStackTrace();
            }
            return result;
        }
    //读文本文件内容,全部读取,放在数组里
        public static ArrayList<String> readTxtFile(String fileName) throws IOException, Exception
        {
            ArrayList<String> txtList = new ArrayList<String>();
            File file = new File(fileName);
    BufferedReader reader = null;
    try {
      reader = new BufferedReader(new FileReader(file));
      String tempString = null;
    //一次读入一行,直到读入null为文件结束
    while ((tempString = reader.readLine()) != null)
    {
    txtList.add(tempString);
    }
    } catch (IOException e)
    {
    e.printStackTrace();
    } finally {
    if (reader != null){
    try 
    {
    reader.close();
    } catch (IOException ex) 
    {
    ex.printStackTrace();
    }
    }
    }
            return txtList;
        }    //写文件方法
        public static boolean writeTxtFile(String fileName, ArrayList<String> lineTxt) throws IOException, Exception
        {
            boolean result = true;
            //检查文件是否存在
            result = FileUtil.checkFileExist(fileName);
            //存在,先删除文件
            result = (result) ? FileUtil.delete(fileName) : true;
            //打开文件
            if (result)
            {
                RandomAccessFile file = null;
                try
                {
                 file = new RandomAccessFile(fileName, "rw");
                    for (int i = 0; i < lineTxt.size(); i++)
                    {
                        //写一行文件内容
                        result = result && FileUtil.writeLineFile(file, lineTxt.get(i).toString(), true);
                    }
                } catch (Exception e)
                {
                } finally
                {
                 if(file != null)
                 try 
    {
                 file.close();
    } catch (IOException ex) 
    {
    ex.printStackTrace();
    }
                }
            }
            return result;
        }
    }
      

  3.   

    BufferedWriter out = null;
    String outFileName =  list.txt;
    out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(outFileName), "SHIFT-JIS"));
    //出力内容を設定する
    out.write(SwCommonConstant.CS3D070_TEXT_OPERATION_NAME+","+" "+currentdateTime);
    out.newLine();
    out.newLine();
    out.write(SwCommonConstant.CS3D070_DATE+","+SwCommonConstant.CS3D070_USER_ID+","+SwCommonConstant.CS3D070_OPEOBJ+","+SwCommonConstant.CS3D070_OPETION);
    out.newLine();
    out.close();
    File file = new File(outFileName);
    // ファイルを出力する。
    InputStream inStream = new FileInputStream(file);
    byte[] bytes = new byte[1000];
    response.reset();
    response.setContentType("bin");
    outFileName=new String(outFileName.getBytes("SHIFT-JIS"),"ISO8859-1"); 
    response.addHeader("Content-Disposition", "attachment;filename="
    + outFileName);
    int len;
    try {
    while ((len = inStream.read(bytes)) > 0)
    response.getOutputStream().write(bytes, 0, len);
    inStream.close();
    } catch (IOException e) {
    e.printStackTrace();
    }借鉴一下吧,文本写
      

  4.   

    简单写了个,没有做扩展。public class Write {

    public static void main(String[] args){
    List<String> list=new ArrayList<String>();
    list.add("c:/test/abc.out");
    list.add("c:/test/ddd.txt");
    list.add("c:/test/aad.xml");

    try {
    Writer writer=new FileWriter("c:/list.txt");
    for(String str:list){
    writer.write(str+System.getProperty("line.separator"));
    }
    writer.flush();
    writer.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
      

  5.   

    非常感谢,有没有办法按照时间顺序把目录下的文件放到list里面?谢谢
      

  6.   

    File有个lastModified方法,可以获得文件最后一次被修改的时间,你可以根据这个时间排列文件。
      

  7.   


    写个比较器       //按修改日期的比较器
           class CompratorByLastModified implements Comparator 
           { 
    //实现接口compare方法
            public int compare(Object o1, Object o2) 
            { 
               File file1 = (File)o1; 
               File file2 = (File)o2; 
               long diff = file1.lastModified() - file2.lastModified(); 
               if (diff > 0) 
                  return 1; 
               else if (diff == 0) 
                  return 0; 
               else 
                  return -1; 
             } 
             public boolean equals(Object obj){ 
               return true; 
             }        }然后 
     File fileRoot = new File(filepath);
                if (fileRoot.isDirectory())
                {
                    File[] fileList = fileRoot.listFiles(new FileFilter());
                    Arrays.sort(fileList,new CompratorByLastModified());//这里排序
                    //fileList 放入ArrayList 即可
                 }
      

  8.   

    我也来练练手import java.io.*;
    import java.util.*;public class ListFiles {
    public static void main(String[] args) throws Exception{
    File f = new File("F:/java");
    BufferedWriter bw = new BufferedWriter(new FileWriter("F:/list.txt"));
    List<String> list = new ArrayList<String>();
    File[] files = f.listFiles();
    for (File file : files) {
    if (file.getName().endsWith(".java")) {
    list.add(file.getName());
    }
    }
    for (int i = 0;i < list.size(); i++ ) {
    bw.write(list.get(i));
    bw.newLine();
    }
    bw.flush();
    bw.close();
    }
    }
      

  9.   

    我也来练练手import java.io.*;
    import java.util.*;public class ListFiles {
    public static void main(String[] args) throws Exception{
    File f = new File("F:/java");
    BufferedWriter bw = new BufferedWriter(new FileWriter("F:/list.txt"));
    List<String> list = new ArrayList<String>();
    File[] files = f.listFiles();
    for (File file : files) {
    if (file.getName().endsWith(".java")) {
    list.add(file.getName());
    }
    }
    for (int i = 0;i < list.size(); i++ ) {
    bw.write(list.get(i));
    bw.newLine();
    }
    bw.flush();
    bw.close();
    }
    }