티스토리 뷰

폴더 정리 프로그램

  • 평소 다운로드 폴더가 너무 더러워서.. 폴더를 생성해서 연관된 파일들을 넣어주면 어떨까 하는 생각이 들었다.
  • 거창한 기능까진 아니고 파일을 확장자별로 폴더에 구분하여 넣어주는 기능을 구상했다.

구현방법

  • 참고로 클래스를 생성한 후 메소드를 클래스 안에 추가하는 방식이다.

Divider 클래스 생성 

  • 간단한 테스트를 위해서 main 메소드를 추가해준다.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

public class FolderClassifier {
    File fs = new File("C:/Users/*****/Downloads");        //원하는 폴더 선택    
        
    public static void main(String args[]){         
            FolderClassifier fc = new FolderClassifier();
            fc.doSeparate();
    }
}

doSeparate() 메소드 구현 

  • 폴더의 모든 확장자 종류를 가져온 뒤 확장자별 일치하는 파일을 찾아 이동시킨다.
    public void doSeparate(){
        if(fs.isDirectory()){
            File list[] = fs.listFiles(); 
            ArrayList<String> arr = scanExtension(list);        //파일 전체 스캔 통해 확장자 종류 파악
            for(int i = 0; i < arr.size(); i++){
                for(int j = 0; j < list.length; j++){
                    if(list[j].getName().endsWith("." + arr.get(i))){
                        moveFile(arr.get(i), list[j].getName(), fs.getPath() + "/" + list[j].getName(), fs.getPath());                    
                    }
                }
            }
        }
    }
    
    public ArrayList<String> scanExtension(File list[]){
        ArrayList<String> extensionList = new ArrayList<String>();
        String fileName = list[0].getName();
        extensionList.add(getExtension(fileName));
        
        for(int i = 1; i < list.length; i++){
            for(int j = 0; j < extensionList.size(); j++){
                
                if(getExtension(list[i].getName()).equals(extensionList.get(j))){
                    break;
                }
                if(j == extensionList.size() - 1){        //중복이 되지 않았을 때 
                    extensionList.add(getExtension(list[i].getName()));
                }
            }
        }
        return extensionList;
    }

    public String getExtension(String filename){        
        int pos = filename.lastIndexOf( "." );
        String ext = filename.substring( pos + 1 );        // get file extension
        return ext;
    }

파일 이동 기능 구현

    public String moveFile(String folderName, String fileName, String beforeFilePath, String afterFilePath) {
        String path = afterFilePath+"/"+folderName;
        String filePath = path+"/"+fileName;

        File dir = new File(path);

        if (!dir.exists()) { //폴더 없으면 폴더 생성
            dir.mkdirs();
        }

        try{
            File file =new File(beforeFilePath);

            if(file.renameTo(new File(filePath))){ //파일 이동
                return filePath; //성공시 성공 파일 경로 return
            }else{
                return null;
            }
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }

관련글

 

[Java] Gson 라이브러리 적용 및 기본 사용법

이번 시간에는 Gson 라이브러리를 적용해보고 간단하게 사용해보는 방법에 대해서 알아보겠습니다. Gson이란? Gson의 정의는 아래와 같습니다. Gson(구글 Gson, Google Gson)은 JSON의 자바 오브젝트의 직��

jinseongsoft.tistory.com

 

[Java] 특정파일 write(line 추가)시에 실시간 모니터링

만약 특정파일 (대표적인 예로 텍스트파일)에서 Line이 추가될 때 마다 실시간으로 감지하려면 어떻게 해야 할까요? 이번 글에서는 File을 실시간으로 모니터링 하면서 새로운 Line이 write 될 때를 감지하는 방법..

jinseongsoft.tistory.com

 

[크롤링] Java Selenium 사용법

이번 시간에는 Java로 selenium을 사용하는 방법에 대해서 알아보도록 하겠습니다. 이번 시간에는 설치 및 적용을 해보는 방법을 알아보고 실습은 따로 알아보도록 하겠습니다. Selenium이란? selenium��

jinseongsoft.tistory.com

 

(Java) 폴더 자체를 Zip으로 압축하는 방법

들어가며 기존에 Apache Commons 라이브러리를 통해서 Zip 압축 기능을 구현했는데 파일을 각각 ZipArchiveEntry로 추가해줘야 하는 방식이었다. public long compressZip(List fileList, File targetFile)..

jinseongsoft.tistory.com


끝으로

이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏

광고 클릭은 많은 힘이 됩니다! 

 

 

 

반응형
댓글