package com.opslab.util.filetest; import com.opslab.util.CharsetUtil; import com.opslab.util.FileUtil; import org.junit.Assert; import org.junit.Test; import test.TestUtil; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.List; import static org.junit.Assert.assertEquals; public class FileUtilTest { @Test public void testCountLines() throws IOException { String file = TestUtil.path + "English.txt"; System.out.println("文件行数:"+FileUtil.countLines(new File(file))); } @Test public void testHash() { String file = TestUtil.path + "ali.gif"; assertEquals("文件Hash校验错误", "4FE6FF69F7257F2E8C36B0752B5393BF", FileUtil.fileMD5(new File(file)).toUpperCase()); } @Test public void testFileType() throws IOException { String efile = TestUtil.path + "ali.gif"; String hfile = TestUtil.path + "tgepng"; assertEquals("文件类型判断有错", "gif", FileUtil.fileType(new File(efile))); assertEquals("文件类型判断有错", "png", FileUtil.fileType(new File(hfile))); assertEquals("获取文件的mime类型错误", "image/gif", FileUtil.mimeType(efile)); } @Test public void testModify() { String exefile = TestUtil.path + "cmdexe"; Date date = FileUtil.modifyTime(new File(exefile)); //assertEquals("获取文件修改的最后时间错误","2010-11-21 11:24:03",DateUtil.DateTime(date)); } @Test public void testLines() { System.out.println("=====按List讲文件全部读入到List中======"); System.out.println("全英文文件测试"); String efile = TestUtil.path + "English.txt"; List<String> lines = FileUtil.lines(new File(efile)); System.out.println(lines); System.out.println("读取文件的前3行"); lines = FileUtil.lines(new File(efile), 3); System.out.println(lines); System.out.println("GBK文件测试"); String gbkfile = TestUtil.path + "GBK.txt"; List<String> gbklines = FileUtil.lines(new File(gbkfile)); System.out.println(gbklines); gbklines = FileUtil.lines(new File(gbkfile), "GBK"); System.out.println(gbklines); System.out.println("读取文件的前3行"); lines = FileUtil.lines(new File(gbkfile), 3, "GBK"); System.out.println(lines); System.out.println("UTF8文件测试"); String utf8file = TestUtil.path + "UTF8.txt"; List<String> utf8lines = FileUtil.lines(new File(utf8file)); System.out.println(utf8lines); utf8lines = FileUtil.lines(new File(utf8file), "UTF-8"); System.out.println(utf8lines); System.out.println("读取文件的前3行"); lines = FileUtil.lines(new File(utf8file), 3, "UTF-8"); System.out.println(lines); } @Test public void testCleanFile() { System.out.println("快速清空一个超大文件"); String clearFile = TestUtil.path + "GBKTOUTF8.txt"; FileUtil.cleanFile(new File(clearFile)); } @Test public void testCopy() throws Exception { System.out.println("测试文件拷贝"); String copy = TestUtil.path + "GBKTOUTF8.txt"; String dest = TestUtil.path + "temp/GBKTOUTF8.txt"; FileUtil.copy(copy, dest); } @Test public void testAppendLine() { System.out.println("向文件中追加行"); String line1 = "E-String"; String line2 = "中文字符串"; File efile = new File(TestUtil.path + "EnglishWrite.txt"); File gbkfile = new File(TestUtil.path + "GBKWrite.txt"); File utf8file = new File(TestUtil.path + "UTF8Write.txt"); FileUtil.appendLine(efile, line1); FileUtil.appendLine(efile, line2); FileUtil.appendLine(efile, line1, "UTF-8"); FileUtil.appendLine(efile, line2, "UTF-8"); FileUtil.appendLine(gbkfile, line1); FileUtil.appendLine(gbkfile, line2); FileUtil.appendLine(gbkfile, line1, "GBK"); FileUtil.appendLine(gbkfile, line2, "GBK"); FileUtil.appendLine(utf8file, line1); FileUtil.appendLine(utf8file, line2); FileUtil.appendLine(utf8file, line1, "UTF-8"); FileUtil.appendLine(utf8file, line2, "UTF-8"); } @Test public void testDeleteFile() { System.out.println("删除文件"); String delete = TestUtil.path + "/temp/delete.txt"; FileUtil.deleteFile(new File(delete)); } @Test public void testDeleteBigFile() { System.out.println("快速删除超大文件"); String delete = TestUtil.path + "temp/bigfile.txt"; FileUtil.deleteBigFile(new File(delete)); } @Test public void testCopyDir() { FileUtil.copyDir(new File(TestUtil.path + "/image/"), TestUtil.path + "temp/copy"); } @Test public void testCreateFiles() { System.out.println("创建文件,支持多级目录"); String path = TestUtil.path + "temp/"; String file1 = path + "/test/test1.txt"; String file2 = path + "/test/test1/test.txt"; String file3 = path + "/test/test/"; FileUtil.createFiles(file1); FileUtil.createFiles(file2); FileUtil.createFiles(file3); } @Test public void testDeleteDir() { String path = TestUtil.path + "temp/"; FileUtil.deleteDir(new File(path + "/test/")); } @Test public void testCreatePath() { System.out.println("创建文件夹,支持多级目录"); String path = TestUtil.path + "temp/"; String path1 = path + "/test/test2/"; String path2 = path + "/test/test3"; FileUtil.createPaths(path1); FileUtil.createPaths(path2); } @Test public void testSimpleEncoding() { System.out.println("简单的利用文件头进行文件的编码探测!"); System.out.println(FileUtil.simpleEncoding(TestUtil.path + "GBK.txt")); System.out.println("利用cpdetector进行文件编码探测"); } @Test public void testListFile() { System.out.println("罗列指定目录下的所有文件"); String path = TestUtil.path + "temp/"; List<File> files = FileUtil.listFile(new File(path)); System.out.println(files); List<File> files1 = FileUtil.listFile(path); System.out.println(files1); } @Test public void testCopyDirs() { System.out.println("复制文件夹"); String path = TestUtil.path + "temp/"; FileUtil.copyDir(path + "/test/", path + "/testcopy/"); } @Test public void testListFileFilter() { System.out.println("罗列指定目录下的特定后缀的文件"); List<File> files = FileUtil.listFileFilter(new File(TestUtil.path), ".txt"); System.out.println(files); } @Test public void testSearchFile() { System.out.println("在指定的目录下搜索指定的文件"); List<File> files = FileUtil.searchFile(new File(TestUtil.path), "GBK.txt"); System.out.println(files); } @Test public void testSearchReg() { System.out.println("在指定的目录下搜索符合某正则的文件"); //匹配字母和数字组成的exe文件 String reg = "\\w{1,}\\.png$"; List<File> files = FileUtil.searchFileReg(new File(TestUtil.path), reg); System.out.println(files); } @Test public void testWriteFile(){ String path = TestUtil.path+"/temp/"; String etemp ="Two roads diverged in a yellow wood,\n" + "And sorry I could not travel both\n" + "And be one traveler, long I stood\n" + "And looked down one as far as I could\n" + "To where it bent in the undergrowth;\n" + "Then took the other, as just as fair,\n" + "And having perhaps the better claim,\n" + "Because it was grassy and wanted wear;\n" + "Though as for that the passing there\n" + "Had worn them really about the same,\n" + "And both that morning equally layn" + "In leaves no step had trodden black.\n" + "Oh, I kept the first for another day!\n" + "Yet knowing how way leads on to way,\n" + "I doubted if I should ever come back.\n" + "I shall be telling this with a sigh\n" + "Somewhere ages and ages hence:\n" + "Two roads diverged in a wood,and\n" + "I took the one less traveled by,\n" + "And that has made al lthe difference."; String ctemp ="黄色的树林里分出两条路\n" + "可惜我不能同时去涉足\n" + "我在那路口久久伫立\n" + "我向着一条路极目望去\n" + "直到它消失在丛林深处\n" + "但我却选择了另外一条路\n" + "它荒草萋萋,十分幽寂   \n" + "显得更诱人,更美丽 \n" + "虽然在这两条小路上\n" + "都很少留下旅人的足迹\n" + "虽然那天清晨落叶满地\n" + "两条路都未经脚印污染\n" + "呵,留下一条路等改日再见\n" + "但我知道路径延绵无尽头\n" + "恐怕我难以再回返\n" + "也许多少年后在某一个地方\n" + "我将轻声叹息把往事回顾\n" + " 一片森林里分出两条路\n" + "而我却选择了人迹更少的一条\n" + "从此决定了我一生的道路"; FileUtil.write(new File(path+"efile1.TXT"),etemp); FileUtil.write(new File(path+"efile2.TXT"),etemp); FileUtil.writeAppend(new File(path + "efile2.TXT"), etemp); FileUtil.write(new File(path + "cfile1.TXT"), ctemp); FileUtil.write(new File(path+"cfile2.TXT"),ctemp); FileUtil.writeAppend(new File(path + "cfile2.TXT"), ctemp); FileUtil.write(new File(path + "efile1_UTF8.TXT"), etemp, CharsetUtil.UTF_8); FileUtil.write(new File(path + "efile2_UTF8.TXT"), etemp, CharsetUtil.UTF_8); FileUtil.writeAppend(new File(path + "efile2_UTF8.TXT"), etemp,CharsetUtil.UTF_8); FileUtil.write(new File(path + "cfile1_UTF8.TXT"), ctemp,CharsetUtil.UTF_8); FileUtil.write(new File(path+"cfile2_UTF8.TXT"),ctemp,CharsetUtil.UTF_8); FileUtil.writeAppend(new File(path + "cfile2_UTF8.TXT"), ctemp, CharsetUtil.UTF_8); } }