1 /**
2 * txt文档去空格
3 * @param url
4 */
5 public void test(String url) {
6 try {
7 File srcFile = new File(url);
8 boolean b = srcFile.exists();
9 //判断是否是路径是否存在,是否是文件夹
10 if (b && srcFile.isDirectory()) {
11 File[] file = srcFile.listFiles();
12 if (file.length == 0) {
13 System.out.println("文件夹内不存在文件!");
14 System.exit(0);
15 }
16 ;
17 for (int i = 0; i < file.length; i++) {
18 //file[i]就是循环出来的文件夹里的文件。然后用下面的方法读它。
19 //判断是否是TXT文件
20 if (!file[i].getName().endsWith("txt")) {
21 System.out.println(file[i].getName() + "不是TXT文件!");
22 continue;
23 }
24 //打开待处理文件,参数是字符串,是个命令
25 Runtime.getRuntime().exec("notepad " + file[i].getAbsolutePath());
26 String str = null;
27 //空格、制表符正则表达式,\s匹配任何空白字符,包括空格、制表符、换页符等
28 String REGEX = "\\s+";
29 //读入字节流,并且设置编码为UTF-8
30 InputStreamReader stream = new InputStreamReader(new FileInputStream(file[i]), "UTF-8");
31 //构造一个字符流的缓存器,存放在控制台输入的字节转换后成的字符
32 BufferedReader reader = new BufferedReader(stream);
33 //建立将要输出的文件和文件名
34 File newFile = new File(file[i].getParent(), "new" + file[i].getName());
35 //写入字节流
36 OutputStreamWriter outstream = new OutputStreamWriter(new FileOutputStream(newFile), "UTF-8");
37 BufferedWriter writer = new BufferedWriter(outstream);
38 //创建Pattern对象,处理正则表达式
39 Pattern patt = Pattern.compile(REGEX);
40 while ((str = reader.readLine()) != null) {
41 //先处理每一行的空白字符
42 Matcher mat = patt.matcher(str);
43 str = mat.replaceAll("");
44 //如果不想保留换行符直接写入就好,不用多此一举
45 if (str == "") {
46 continue;
47 } else {
48 //如果想保留换行符,可以利用str+"\r\n" 来在末尾写入换行符
49 writer.write(str);
50 }
51 }
52 writer.close();
53 reader.close();
54 //打开修改后的文档
55 Runtime.getRuntime().exec("notepad " + newFile.getAbsolutePath());
56 }
57 System.out.println("文件修改完成!");
58 } else {
59 System.out.println("文件夹路径不存在或输入的不是文件夹路径!");
60 System.exit(0);
61 }
62 } catch (IOException e) {
63 System.out.println(e);
64 }
65 }