자바/입출력 IO

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

백_곰 2022. 4. 28. 17:13

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