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+" " 来在末尾写入换行符 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 }