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 }