-
명품JAVA프로그래밍 8장 실습문제a 2021. 11. 9. 21:41반응형
실습문제_1
import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class Main { public static void main(String[] args) { FileWriter fout = null; Scanner s = new Scanner(System.in); System.out.println("전화번호 입력 프로그램입니다."); try { fout = new FileWriter("c:/temp/phone.txt"); while(true) { System.out.print("이름 전화번호 >>"); String inputLine = s.nextLine(); if(inputLine.equals("그만")) break; fout.write(inputLine); fout.write("\r\n",0,2); } fout.close(); s.close(); }catch(IOException e) { System.out.println("파일 입출력 오류"); } System.out.println("저장하였습니다."); } }
fout.write(line+"\r\n");
+를 이용해 뒤에 이어서 write할 수 있다.
실습문제_2
import java.io.File; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { FileReader fin = null; File f = new File("c:/temp/phone.txt"); int c; try { fin = new FileReader(f); while((c = fin.read())!= -1) { System.out.print((char)c); } fin.close(); }catch(IOException e) { System.out.println("입출력 오류"); } } }
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { BufferedReader br = null; File f = new File("c:/temp/phone.txt"); int c; try { br = new BufferedReader(new FileReader(f)); while(true) { String line = br.readLine(); if(line == null) break; System.out.println(line); } br.close(); }catch(IOException e) { System.out.println("입출력 오류"); } } }
BufferedReader 는 문자 스트림의 생성할 수 있는 애. readLine()메소드로 String 반환하니까 line으로 읽을 수 있다.
실습문제_3
import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class Main { public static void main(String[] args) { FileInputStream fileRead = null; File f; int line; try { f= new File("c:/windows/system.ini"); fileRead = new FileInputStream(f); while((line = fileRead.read()) != -1) { line = Character.toUpperCase(line); System.out.print((char)line); } }catch(IOException e) { System.out.println("입출력 오류"); } } }
ini 파일이 txt파일이라서 FileReader를 사용해도 된다.
실습문제_4
import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { FileReader fr = null; int c; Scanner s; try { fr = new FileReader("c:/windows/system.ini"); s= new Scanner(fr); System.out.println("파일을 읽어 출력합니다."); int stringLine = 1; while(s.hasNext()) { String line = s.nextLine(); System.out.printf("%4d:",stringLine++); System.out.println(line); } }catch(IOException e) { System.out.println("그렇네"); } fr.close(); } }
Scanner fScanner = new Scanner(new FileReader("c:\\windows\\system.ini"));
이렇게 Scanner 안에서 선언할 수도 있고.
Scanner는 hasNext() 메소드랑 nextLine()메소드를 활용하면 돼요
실습문제_5
import java.io.FileInputStream; import java.io.IOException; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { FileInputStream fileOrig = null; FileInputStream fileCopy = null; Scanner s = null; String line1,line2; try { s = new Scanner(System.in); System.out.println("첫번째 파일>>"); line1 = s.nextLine(); fileOrig = new FileInputStream(line1); System.out.println("두번째 파일>>"); line2 = s.nextLine(); fileCopy = new FileInputStream(line2); System.out.println(line1+"과"+line2+"를 비교합니다."); if(compare(fileOrig,fileCopy)) { System.out.println("둘이 같습니다."); } else { System.out.println("둘은 다릅니다."); } }catch(IOException e) { System.out.println("file error"); } s.close(); fileOrig.close(); fileCopy.close(); } private static boolean compare(FileInputStream src,FileInputStream dest) throws IOException { byte[] srcBuf = new byte[1024]; byte[] destBuf = new byte[1024]; int srcC,destC, n =0; while((srcC = src.read())!=-1) { srcBuf[n++] = (byte) srcC; } n=0; while((destC = dest.read())!= -1) { destBuf[n++] = (byte) destC; } for(int i = 0;i<srcBuf.length;i++) { if(srcBuf[i] != destBuf[i]) return false; } return true; } }
srcC = src.read(srcBuf, 0, srcBuf.length); // src 스트림에서 srcBuf 크기만큼 읽기
destC = dest.read(destbuf, 0, destbuf.length); // dest 스트림에서 destBuf 크기만큼 읽기
if (srcCount != destCount) // 읽어들인 바이트 수가 다르면 파일이 다름
return false;
if(srcCount == -1) break; // 파일 끝에 도달함
스트림 내장 함수를 사용할 수도 있다.
실습문제_6
import java.io.File; public class Main { public static void main(String[] args) { File file = new File("c://"); File [] files = file.listFiles(); //listFiles() 메소드는 파일 배열을 출력 long big = 0; File bigFile = null; for(int i = 0;i<files.length;i++) { File f= files[i]; if(!f.isFile()) continue; //파일이 아니면 continue long size = f.length(); //파일이면 length로 길이를 알아보기 if(big < size) { big = size; bigFile = f; } } if(bigFile == null) System.out.println("파일이 없는 폴더"); else System.out.println("가장 큰 파일은 "+bigFile.getName()); } }
파일 클래스를 이용해서 크기를 알아보기
f의 length() 메소드는 long으로 받는다
실습문제_9
import java.io.File; public class RemoveTxtFile { public static void main(String[] args) { File file = new File("c:/temp"); File[] files = file.listFiles(); int i; System.out.println("파일을 삭제합니다."); for(i =0; i<files.length;i++){ if(!file.isFile()) continue; String fileName = file.getName(); int index = fileName.lastIndexOf(".txt"); if(index == -1) continue; else { files[i].delete(); } } System.out.println("총"+i+"개의 파일을 삭제했습니다."); } }
반응형'a' 카테고리의 다른 글
[공학수학] 상미분방정식 001 (0) 2022.03.05 [Mathematics in engineering] ch01. First-Order ODEs (0) 2022.03.05 docker -> GPGPU-Sim-sim 4.0 빌드 (0) 2022.02.27 [명품JAVA프로그래밍] 7장. 제네릭과 컬렉션 실습문제 (0) 2021.11.08 java.util.NoSuchElementException (0) 2021.11.04