표준 입출력과 File: File(3)

2022. 4. 28. 17:13·자바/입출력 IO

1-7. File을 이해하기 위한 예제(7)

: 해당 디렉토리에 입력된 문자열과 일치한 파일의 목록을 보여주는 예제이다.

 

package File;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Scanner;

public class Exercise007 {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		String input = sc.nextLine();
		
		if(input == null) {
			System.out.println("USAGE : java FileEx7 pattern");
			System.exit(0);
		}

		String currDir = System.getProperty("user.dir");

		File dir = new File(currDir);
		final String pattern =input;
		
             // String[] list (FilenameFilter filter)
		String[] files = dir.list(new FilenameFilter() { 
			public boolean accept(File dir, String name) {
				return name.indexOf(pattern) != -1;
			}
		});

		for(int i=0; i < files.length; i++) {
			System.out.println(files[i]);
		}
	}
}

출력문

 

( 특정 조건에 맞는 파일의 목록을 얻기 위해 FilenameFilter를 구현해서 String[] list(FilenameFilter filter)를 

사용했다. )

 

 

 

 

1-8. File을 이해하기 위한 예제(8)

: 확장자를 입력하면 해당되는 파일을 삭제하는 예제이다.

 

package File;

import java.io.File;
import java.util.Scanner;

public class Exercise008 {
	static int deletedFiles = 0;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String input = sc.nextLine();
		
		if(input == null) {
			System.out.println("USAGE : java FileEx8 Extension");
			System.exit(0);
		}

		String currDir = System.getProperty("user.dir");

		File dir = new File(currDir);
		String ext = "." + input;

		delete(dir, ext);
		System.out.println(deletedFiles + "개의 파일이 삭제되었습니다.");
	} // end of main

	public static void delete(File dir, String ext) {
		File[] files = dir.listFiles();

		for(int i=0; i < files.length; i++) {
			if(files[i].isDirectory()) {
				delete(files[i], ext);
			} else {
				String filename = files[i].getAbsolutePath();

				if(filename.endsWith(ext)) {
					System.out.print(filename);
					if(files[i].delete()) {
						System.out.println(" - 삭제 성공");
						deletedFiles++;     
					} else {
						System.out.println(" - 삭제 실패");
					}
				} // if(filename.endsWith(ext)) {
			} // if(files[i].isDirectory()) {
		} // for(int i=0; i < files.length; i++) {
	} // end of delete
} // end of class

 

( 파일 삭제를 위해 delete()를 사용하였다. )

 

 

 

 

1-9. File을 이해하기 위한 예제(9)

: 파일 1.txt, 2.txt, 11.txt 등이 있다면, 1.txt 다음 2.txt가 와야 하는데, 윈도우에서는 11.txt가 다음에 나오므로, 이것을

해결하기 위해 001.txt, 002.txt, 011.txt 로 바꿔주는 예제이다.

 

package File;

import java.io.File;
import java.util.Scanner;

public class Exercise009 {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		String input = sc.nextLine();
	
		if(input == null) {
			System.out.println("Usage: java FileEx9 DIRECTORY"); 
			System.exit(0); 
		} 

		File dir = new File(input); 

		if(!dir.exists() || !dir.isDirectory()) {
			System.out.println("유효하지 않은 디렉토리입니다.");
			System.exit(0);
		} 

		File[] list = dir.listFiles(); 

		for (int i = 0; i < list.length; i++) { 
			String fileName = list[i].getName(); 
			// 파일명 
			String newFileName = "0000" + fileName; 
			newFileName = newFileName.substring(newFileName.length() - 7); 
			list[i].renameTo(new File(dir, newFileName)); 
		} 
	} // end of main 
} // end of FileEx9 class

코드 실행 전
코드 실행 후

 

( 이름을 바꾸기 위해서 renameTo()를 사용하였다. )

 

 

 

다음장

표준 입출력과 File: File(4) (tistory.com)

 

표준 입출력과 File: File(4)

1-10. File을 이해하기 위한 예제(10) : 지정된 파일을 지정된 크기(KB)만큼 자르는 예제이다. package File; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInp..

kind-coding.tistory.com

 

저작자표시 (새창열림)

'자바 > 입출력 IO' 카테고리의 다른 글

직렬화(Serializtion): Object 입출력 스트림  (0) 2022.04.29
표준 입출력과 File: File(4)  (0) 2022.04.28
표준 입출력과 File: File(2)  (0) 2022.04.28
표준 입출력과 File: File(1)  (0) 2022.04.27
표준 입출력과 File: RandomAccessFile  (0) 2022.04.27
'자바/입출력 IO' 카테고리의 다른 글
  • 직렬화(Serializtion): Object 입출력 스트림
  • 표준 입출력과 File: File(4)
  • 표준 입출력과 File: File(2)
  • 표준 입출력과 File: File(1)
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      Collections Framework
      제자리 정렬
      outputstream
      InputStream
      자바 개념
      file
      snail
      java.time 패키지
      안드로이드 스튜디오
      다형성
      중간연산
      TCP 소켓 프로그래밍
      map()
      선택 정렬
      코드트리
      serializable
      알고스팟
      유용한 클래스
      코딩테스트
      코딩트리조별과제
      불안정 정렬
      java.lang패키지
      문자 기반 스트림
      역직렬화
      안정 정렬
      스트림
      람다식
      ServerSocket
      Arrays
      소켓 프로그래밍
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    표준 입출력과 File: File(3)
    상단으로

    티스토리툴바