两个相同的文件夹(包含很多文件),一个是从UNIX服务器上下载下来的,一个是WINDOWS环境下的,当比较这两个文件下的不同文件时,有部分文件因换行符不同导致文件大小不一致(这部分文件里面的内容其实是一样的),这种问题怎么解决,求解

解决方案 »

  1.   

    DOS2UNIX and UNIX2DOSDOS2UNIX.EXE and UNIX2DOS.EXE are small Win32 (ie: Windows 9x and NT) console-mode file conversion utilities, compiled using Microsoft Visual C/C++ v4.0/v6.0. DOS2UNIX.EXE converts MS-DOS text files to Unix format, by stripping any CR or end-of-file (Ctrl-Z) characters from the data. UNIX2DOS.EXE inserts a CR character when it encounters an LF character, converting the data to MS-DOS format. 
    http://www.bastet.com/uddu.zipdiff 类软件可以设置 忽略行结束符的区别。
      

  2.   

    在linux下有个命令叫做 uniz2dos 还有个命令叫 dos2unix还有个命令叫diff
      

  3.   

    import java.io.*;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class TestHuanhang {
        /*
         *适用于windows平台将一个目录下的所有文件的unix换行符\x0a转换成\x0d\x0a
         * 后存放在另外一个文件夹,请使用不同的文件夹名
         *  参数1,源文件夹,参数2目标文件夹,参数3 过滤的正则表达式.参数4,新的换行符 .参数1,2,3都必须指定
        参数4的格式为 crlf 或cr 或lf
         *  目标文件夹和原文件夹都必须事先存在
         *   一個命令的例子:java TestHuanhang . work .xml crlf
         */    public static void main(final String[] args) {
            if (args.length < 3) {
                System.out.println("请输入包含unix换行符所在文件的文件夹,和转换后所要放在的文件夹!和过滤的正则");
                System.exit(0);
            }
            File srcFolder = new File(args[0]);
            File destFolder = new File(args[1]);
            if (!(srcFolder.isDirectory() && destFolder.isDirectory())) {
                System.out.println("源文件夹和目标文件夹必须存在并且是目录!");
                System.exit(0);
            }
            if (srcFolder.compareTo(destFolder) == 0) {
                System.out.println("源文件夹和目标文件夹不能相同!");
                System.exit(0);
            }        if (args.length == 4 && !(args[3].equalsIgnoreCase("crlf") || args[3].equalsIgnoreCase("lf") || args[3].equalsIgnoreCase("cr"))) {
                System.out.println("请指定正确的行分割符!例如crlf或cr或lf");
                System.exit(0);        }        String sline = "";
            if (args.length == 3) {
                sline = "\n";
            } else if (args[3].equalsIgnoreCase("crlf")) {
                sline = Character.toString((char) 13) + Character.toString((char) 10);
            } else if (args[3].equalsIgnoreCase("cr")) {
                sline = Character.toString((char) 13);
            } else {
                sline = Character.toString((char) 10);
            }
            File[] srcs = srcFolder.listFiles(new FilenameFilter() {            public boolean accept(File dir, String name) {
                    Matcher m = Pattern.compile(args[2]).matcher(name);
                    if (m.find()) {
                        return true;
                    } else {
                        return false;
                    }
                }
            });        for (File src : srcs) {
                BufferedReader br = null;
                PrintWriter pw = null;
                try {
                    try {
                        br = new BufferedReader(new FileReader(src));
                        pw = new PrintWriter(new File(destFolder.getAbsolutePath(), src.getName()));
                        String line;
                        while (null != (line = br.readLine())) {
                            pw.print(line + sline);
                        }
                    } finally {
                        try {
                            if (br != null) {
                                br.close();
                            }
                        } finally {                        if (pw != null) {
                                pw.close();
                            }
                        }
                    }
                } catch (Exception e) {
                }
            }    }
    }