자바꼼나뭉
60
2021-05-04 17:58:00
1
99

자바 코드 질문


사용자가 지정한 폴더에 위치한 모든 파일들을 읽어서 사용자가 지정한 폴더에 복사( 단 폴더의 파일수가 10개 이하거나 파일들의 총용량이 1mb이하 인경우 다른 폴더를 지정하게) 할려면 어떻게 코드를 짜야하나요... 아무리 생각해도 안떠오릅니다 ㅜㅜ 
0
  • 답변 1

  • 종로3가
    117
    2021-05-05 13:06:17

    소스 디렉토리: C:\tmp

    타겟 디렉토리(C:\tmp 내 파일이 10개 이상이거나 총 파일 사이즈가 1mb 보다 클때): C:\tmp\backup

    타겟 디렉토리(C:\tmp 내 파일이 10개 미만이거나 총 파일 사이즈가 1mb 보다 적을때): 유저 프롬-> 디렉토리 설정(예를들어 C:\tmp\tmp_backup

    Test1.java

    import java.io.*;
    import java.util.Scanner;
    
    public class Test1 {
    
        public static void main(String[] args) 
    	throws IOException {
    
    	 String srcDir = "C:/tmp";	 
    	 String tgtDir = "C:/tmp/backup";
    	 
         File src = new File(srcDir);
         File tgt = new File(tgtDir);
    
         int countFiles = 0;
         int countDirectory=0;
    	 double totalMega=0;
         for (File file : src.listFiles()) {
                 if (file.isFile()) {
                         countFiles++;
    					 totalMega += file.length();
                 }
                 if (file.isDirectory()) {
                         countDirectory++;
                 }
    
         }
    	 if (countFiles < 11 || totalMega < 1) {
    		System.out.println("Number of files in Directory : " + countFiles+"\nNumber of Sub-directories "+countDirectory + "\nTotal file size: " + totalMega / (1024 * 1024) + " mb");
    		
    		 Scanner sc=new Scanner(System.in);  
    
    		 System.out.println("Enter the Path for Directory/Folder Name");  
    		 String tgtFile = sc.nextLine(); 
    		 System.out.println("Your Directory/folder is :"+tgtFile);
    		File t = new File(tgtFile);
    		copyDirectory(src,t);
    	 }
    	 else {
    		System.out.println("Number of files in Directory : " + countFiles+"\nNumber of Sub-directories "+countDirectory + "\nTotal file size: " + totalMega / (1024 * 1024) + " mb");
    		copyDirectory(src,tgt);
        }
    	
    	
    	}
    	public static void copyDirectory(File sourceLocation , File targetLocation)
        throws IOException {
    
            if (sourceLocation.isDirectory()) {
                if (!targetLocation.exists()) {
                    targetLocation.mkdir();
                }
                String[] children = sourceLocation.list();
    			
                for (int i=0; i<children.length; i++) {
    				File ff = new File(sourceLocation, children[i]);
    				if (ff.isFile()) {
    					copyDirectory(new File(sourceLocation, children[i]), new File(targetLocation, children[i]));
    				}
                }
            } else {
    
                InputStream in = new FileInputStream(sourceLocation);
                OutputStream out = new FileOutputStream(targetLocation);
    
                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                in.close();
                out.close();
            }
        }
    }



  • 로그인을 하시면 답변을 등록할 수 있습니다.