๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/JAVA

(34) [JAVA] 18์ผ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ(I/O Stream) - 2

by ๋”ฐ๊ถˆ 2024. 4. 3.

 

 

FileWriter 

์ถœ๋ ฅํ•  ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ๋””ํดํŠธ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์˜ ๋ฐ”์ดํŠธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค. OutputStreamWriter ํด๋ž˜์Šค์˜ ํ•˜์œ„ ํด๋ž˜์Šค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ๊ทธ ํŒŒ์ผ์— ๋ฎ์–ด์“ฐ๋ฏ€๋กœ ๊ธฐ์กด ๋‚ด์šฉ์€ ์‚ฌ๋ผ์ง„๋‹ค.

 

์ฃผ์š” ์ƒ์„ฑ

 

package ch14.unit03;

import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.Reader;

public class Ex21_FileWriter {

	public static void main(String[] args) {
		String pathname ="test.txt";
		int data;
		
		/*
		 - FileWriter
		 : ํŒŒ์ผ ์ถœ๋ ฅ ๋ฌธ์ž ์ŠคํŠธ๋ฆผ
		 : ํ…์ŠคํŠธ ํŒŒ์ผ๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ. ์ด๋ฏธ์ง€, 2์ง„ ํŒŒ์ผ์€ ์ €์žฅ ๋ถˆ๊ฐ€
		 */
		
		try (FileWriter fw=new FileWriter(pathname)){
			System.out.println("๋ฌธ์ž์—ด ์ž…๋ ฅ(์ข…๋ฃŒ:Ctrl+Z)...");
			Reader rd=new InputStreamReader(System.in);
			
			while((data=rd.read())!=-1) {
				fw.write(data);
			}
			fw.flush();
			System.out.println("ํŒŒ์ผ ์ €์žฅ ์™„๋ฃŒ!");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

}

 

 

 

FileReader

ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ฐ”์ดํŠธ๋ฅผ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฝ์–ด ๋“ค์ธ๋‹ค. InputStreamReader ํด๋ž˜์Šค์˜ ํ•˜์œ„ ํด๋ž˜์Šค ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด FileNotFoundException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ

 

์ฃผ์š” ์ƒ์„ฑ์ž

 

package ch14.unit03;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class Ex22_FileReader {

	public static void main(String[] args) {
		String pathname="test.txt";
		int data;
		
		//FileReader: ํŒŒ์ผ ๋ฌธ์ž ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ 
		try (FileReader fr=new FileReader(pathname)){
			Writer wt=new OutputStreamWriter(System.out);
			
			System.out.println("ํŒŒ์ผ ๋‚ด์šฉ...");
			while((data=fr.read())!=-1){
			wt.write(data);	
			}
			
			wt.flush();
		
		} catch (FileNotFoundException e) {
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

 

 

package ch14.unit03;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ex23_FileReader {

	public static void main(String[] args) {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		BufferedReader fbr=null;
		
		String pathname=null;
		String s;
		
		
		try {
			System.out.println("๊ฒฝ๋กœ๋ช…์„ ํฌํ•จํ•œ ํŒŒ์ผ๋ช…? :");
			pathname=br.readLine();
			
			fbr=new BufferedReader(new FileReader(pathname));
			
			while((s=fbr.readLine())!=null) {
				System.out.println(s);
			}
			
		} catch (FileNotFoundException e) {
			System.out.println("["+pathname+"]ํŒŒ์ผ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		

	}

}

 

 

 

File 

File ํด๋ž˜์Šค๋Š” ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ด ์ฃผ๋Š” ํด๋ž˜์Šค. ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์ œ๊ฑฐ, ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ, ํŒŒ์ผ ์ œ๊ฑฐ, ๋””๋ ‰ํ† ๋ฆฌ ๋˜๋Š” ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด ๋“ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ž…์ถœ๋ ฅ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

package ch14.unit03;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Ex31_File {

	public static void main(String[] args) {
		String appDir=System.getProperty("user.dir");
		System.out.println("ํ˜„ ์ž‘์—… ๊ฒฝ๋กœ:"+appDir);

		String pathname=appDir+File.separator+"test.txt"; // separator 
		
		//ํŒŒ์ผ ์กด์žฌ ์—ฌ๋ถ€
		File f =new File(pathname);
		
		if(! f.exists()) {
			System.out.println(pathname+" : ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค.");
			System.exit(0);
		}
		
		try {
			System.out.println("ํŒŒ์ผ์ •๋ณด~~~~~~~!");
			System.out.println("ํŒŒ์ผ๋ช…:"+f.getName());
			System.out.println("๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•œ ํŒŒ์ผ๋ช…: " + f.getPath()); // C:\๊ฒฝ๋กœ\ํŒŒ์ผ๋ช….ํ™•์žฅ์ž 
			System.out.println("์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ช…: " + f.getAbsolutePath()); // C:\๊ฒฝ๋กœ\ํŒŒ์ผ๋ช….ํ™•์žฅ์ž 
			System.out.println("ํ‘œ์ค€ ๊ฒฝ๋กœ๋ช…: " + f.getCanonicalPath()); // C:\๊ฒฝ๋กœ\ํŒŒ์ผ๋ช….ํ™•์žฅ์ž 
			System.out.println("๋ถ€๋ชจ ๊ฒฝ๋กœ๋ช…: " + f.getParent());//C:\๊ฒฝ๋กœ 
			System.out.println("ํŒŒ์ผ ํฌ๊ธฐ(long): " + f.length());
			System.out.println("ํŒŒ์ผ ์ƒ์„ฑ์ผ : "+new Date(f.lastModified()));
			SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");
			System.out.println("ํŒŒ์ผ ์ƒ์„ฑ์ผ : "+sdf.format(new Date(f.lastModified())));
			System.out.println("์ฝ๊ธฐ ์†์„ฑ : "+f.canRead());
			System.out.println("์“ฐ๊ธฐ ์†์„ฑ :"+f.canWrite());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

 

 

package ch14.unit03;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;

public class Ex32_FileDelete {

	public static void main(String[] args) {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String pathname;
		
		try {
			System.out.print("๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•œ ์ง€์šธ ํŒŒ์ผ๋ช…?: ");
			pathname = br.readLine();
			
			File f=new File(pathname);
			if(! f.exists()) {
				System.out.println(pathname+": ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
				System.exit(0);
			}
			
			// ํŒŒ์ผ์ด๋‚˜ ํด๋”๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์‚ญ์ œ ๊ฐ€๋Šฅ
			// ํด๋”๋Š” ๋น„์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์‚ญ์ œ ๋ถˆ๊ฐ€
			
			boolean b =f.delete();
			if(b) {
				System.out.println("์‚ญ์ œ ์™„๋ฃŒ!");
			}else {
				System.out.println("์‚ญ์ œ ๋ถˆ๊ฐ€!!!");
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		

	}

}

 

 

package ch14.unit03;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Ex33_FileList {

	public static void main(String[] args) {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String s;
		
		try {
			System.out.print("ํŒŒ์ผ๋ช… ๋˜๋Š” ๊ฒฝ๋กœ? ");
			s=br.readLine();
			
			dirlist(s);
			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
		
		
		public static void dirlist(String pathname) {
			File file =new File(pathname);
			File[]ff= file.listFiles();
			
			if(ff==null||ff.length==0) {
				return;
			}

		try {
			SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");
			String s;
			
			for(File f:ff) {
				s=sdf.format(new Date(f.lastModified()));
				
				System.out.printf("%-40s\t%s\t%s\n", f.getName(), s);
				
				if(f.isFile()) {
					System.out.println(f.length());
				}else if(f.isDirectory()) {
					System.out.println("[ํด๋”]");
				}else {
					System.out.println();
				}
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}

		
	}

}

 

 

package ch14.unit03;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;

public class Ex36_Remove {

	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String s;

		try {
			System.out.println("์‚ญ์ œํ•  ํŒŒ์ผ ๋˜๋Š” ๊ฒฝ๋กœ"); // C:\ex
			s = br.readLine();

			FileManager fm = new FileManager();
			boolean b = fm.removerDir(s);

			if (b) {
				System.out.println("์‚ญ์ œ ์™„๋ฃŒ....");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

class FileManager {
	public boolean removerDir(String pathname) {
		boolean b = false;

		try {
			File f = new File(pathname);

			if (f.isDirectory()) {

				removeSubDir(pathname);
			}

			b = f.delete();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return b;
	}

	private void removeSubDir(String pathname) throws Exception {
		File[] ff = new File(pathname).listFiles();

		try {
			if (ff.length == 0) {
				return;
			}

			for (File f : ff) {
				if (f.isDirectory()) {
					removeSubDir(f.getPath());
				}

				f.delete();
			}

		} catch (Exception e) {
			throw e;
		}

	}
}