开元周游
德国频道
查看: 2628|回复: 7
打印 上一主题 下一主题

用Java将文件排序的问题

[复制链接]
跳转到指定楼层
1#
发表于 30.8.2009 22:11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有什么好办法将一个Ordner中n个文件按字母排列顺序?
2#
发表于 31.8.2009 16:34:57 | 只看该作者
本来就是排好的了啊:
如比这个代码:
    File files = new File("c:\\\\");
                for(File file: files.listFiles()) {
                        System.out.println(file.getName());
                }

输出就是按字母排序的,还是LZ指的是别的东西?在GUI里??还是什么.?

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 31.8.2009 17:25:13 | 只看该作者
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 31.8.2009 17:26:17 | 只看该作者
不过,如果Ordner下的Ordner中还有文件呢。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 31.8.2009 17:31:23 | 只看该作者
本帖最后由 有容乃大 于 31.8.2009 18:37 编辑

一个Ordner下有文件也有Ordner,需要把文件和子目录下的文件按字母顺序copy到一个新目录下,并按顺序一起写入另一新文件中。
回复 支持 反对

使用道具 举报

6#
发表于 31.8.2009 22:20:01 | 只看该作者
本帖最后由 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();
        }
    }
}

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

7#
发表于 31.8.2009 22:25:50 | 只看该作者
以上是纯用J2SDK写的,
如果允许用第三方包,
org.apache.commons.io.FileUtils
有函数直接完成上面的功能,你也可以试一试,不过要先下载lib 先。
下面的地址是 javaDoc
http://commons.apache.org/io/api ... s/io/FileUtils.html
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 31.8.2009 22:56:26 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点信息

站点统计| 举报| Archiver| 手机版| 小黑屋

Powered by Discuz! X3.2 © 2001-2014 Comsenz Inc.

GMT+1, 15.11.2024 05:12

关于我们|Apps

() 开元网

快速回复 返回顶部 返回列表