德国开元华人社区 开元周游

标题: 用Java将文件排序的问题 [打印本页]

作者: 有容乃大    时间: 30.8.2009 22:11
标题: 用Java将文件排序的问题
有什么好办法将一个Ordner中n个文件按字母排列顺序?
作者: Pant1980    时间: 31.8.2009 16:34
本来就是排好的了啊:
如比这个代码:
    File files = new File("c:\\\\");
                for(File file: files.listFiles()) {
                        System.out.println(file.getName());
                }

输出就是按字母排序的,还是LZ指的是别的东西?在GUI里??还是什么.?
作者: 有容乃大    时间: 31.8.2009 17:25
是呀,谢谢。
作者: 有容乃大    时间: 31.8.2009 17:26
不过,如果Ordner下的Ordner中还有文件呢。
作者: 有容乃大    时间: 31.8.2009 17:31
本帖最后由 有容乃大 于 31.8.2009 18:37 编辑

一个Ordner下有文件也有Ordner,需要把文件和子目录下的文件按字母顺序copy到一个新目录下,并按顺序一起写入另一新文件中。
作者: Pant1980    时间: 31.8.2009 22:20
本帖最后由 Pant1980 于 31.8.2009 23:46 编辑

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class FolderCopy {

    public static void main(String[] args) {
        copyFolder("C:\\Brother", "c:\\temp\\brother2", "c:\\record.txt");
    }
   
    public static void copyFolder(String src, String des, String recordFilePath) {
        File srcFolder = new File(src);
        File desFolder = new File(des);
        desFolder.mkdirs();
        try {
            OutputStream os = new FileOutputStream(recordFilePath);
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
            bw.append(des);
            bw.newLine();
            copyRecursive(srcFolder, desFolder, bw, 0);
            
            bw.close();
            os.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
   
    private static void copyRecursive(File srcFolder, File desFolder, BufferedWriter bw, int level) {
        // One time this function called, it is one level deeper.
        level++;
        
        for(File file : srcFolder.listFiles()) {
            // Depth first write the copy information to the record file.
            writeIndent(bw, level);
            try {
                if(file.isDirectory()) {
                    bw.append("+");
                }
                bw.append(file.getName());
                bw.newLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            if(file.isDirectory()) { // Create sub folder.
                String subDesFolderPath = desFolder.getAbsolutePath()
                    + "\\" + file.getName();
                File subDesFolder = new File(subDesFolderPath);
                subDesFolder.mkdir();
               
                // Recursive copy the subfolder.
                copyRecursive(file, subDesFolder, bw, level);
            } else { // Do copy.
                String desFilePath = desFolder.getAbsolutePath()
                    + "\\" + file.getName();
                try {
                    OutputStream os = new FileOutputStream(desFilePath);
                    InputStream is = new FileInputStream(file);
                    int byteread = 0;
                    byte[] buffer = new byte[1024];
                    while((byteread = is.read(buffer)) != -1) {
                        os.write(buffer, 0, byteread);
                    }
                    os.close();
                    is.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
   
    private static void writeIndent(BufferedWriter bw, int level) {
        try {
            for (int i = 0; i < level; i++) {
                bw.append("\t");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
作者: Pant1980    时间: 31.8.2009 22:25
以上是纯用J2SDK写的,
如果允许用第三方包,
org.apache.commons.io.FileUtils
有函数直接完成上面的功能,你也可以试一试,不过要先下载lib 先。
下面的地址是 javaDoc
http://commons.apache.org/io/api ... s/io/FileUtils.html
作者: 有容乃大    时间: 31.8.2009 22:56
强,多谢。




欢迎光临 德国开元华人社区 开元周游 (https://bbs.kaiyuan.cn/) Powered by Discuz! X3.2