2017-06-05 69 views
0

我有一個程序,應該處理目錄中的文件,如果文件大小超過50個字節刪除它。否則,如果文件大小小於50字節,程序應將args [1]文件重命名爲allFilesContent.txt(同一目錄),並將所有文件寫入此文件,並用「n」(110個ASCII碼)分隔。但是,該程序只是創建另一個文件並寫入第一個參數文件[1]。有什麼問題?而不是重命名我的文件只是複製

public class Solution 
{ 
    public static void main(String [] args) throws IOException 
    { 
     File path = new File(args[0]); 
     File resultFileAbsolutePath = new File(args[1]); 
     ArrayList<File> allFiles = new ArrayList<>(); 
     boolean isRenamed = false; 

     for(File file : path.listFiles()) 
     { 
      if(file.length() > 50) 
      { 
       FileUtils.deleteFile(file); 
      } 

      else if(file.length() <= 50) 
      { 
       if(!isRenamed) 
       { 
       FileUtils.renameFile(resultFileAbsolutePath, new File(resultFileAbsolutePath.getParent()+"\\allFilesContent.txt")); 
       isRenamed = true; 
       } 
       if(!file.getName().equals(resultFileAbsolutePath.getName())) 
       { 
       allFiles.add(file); 
       } 
      } 
     } 

     Collections.sort(allFiles, new Comparator<File>() 
     { 
      @Override 
      public int compare(File o1, File o2) 
      { 
       return o1.getName().compareTo(o2.getName()); 
      } 
     }); 

     FileOutputStream fileOutputStream = new FileOutputStream(resultFileAbsolutePath, true); 

     for (File file : allFiles) 
     { 
      try(FileInputStream fileInputStream = new FileInputStream(file)) 
      { 
       if(allFiles.indexOf(file) != 0) fileOutputStream.write(110); 
       int data; 
       while(fileInputStream.available() > 0) 
       { 
        data = fileInputStream.read(); 
        fileOutputStream.write(data); 
       } 
      } 
     } 

     fileOutputStream.close(); 
    } 

    public static void deleteFile(File file) 
    { 
     if (!file.delete()) 
     { 
      System.out.println("Can not delete file with name " + file.getName()); 
     } 
    } 
} 

和文件實用程序類

import java.io.File; 

public class FileUtils 
{ 

    public static void deleteFile(File file) 
    { 
     if (!file.delete()) 
     { 
      System.out.println("Can not delete file with name " + file.getName()); 
     } 
    } 

    public static void renameFile(File source, File destination) 
    { 
     if (!source.renameTo(destination)) 
     { 
      System.out.println("Can not rename file with name " + source.getName()); 
     } 
    } 
} 

回答

-1

,可以有以下聲明: 「FileOutputStream中FileOutputStream中=新的FileOutputStream中(resultFileAbsolutePath,真);」

而不是「真」把「假」。它應該工作。

+0

不,這隻允許輸出流從多個文件寫入 –

相關問題