5. 2개의 파일을 입력받고 비교하여 같으면 "파일이 같습니다.", 틀리면 "파일이 서로 다릅니다."를 출력하는 프로그램을 작성하라. 텍스트 및 바이너리 파일 모두를 포함한다. 아래 실행 예시에서는 프로젝트 폴더에 elvis1.txt와 복사본 elvis1-복사본.txt를 미리 준비해 두었다.
elvis1.txt와 elvis1-복사본.txt의 내용은 같고(hello world) elvis2.txt는 다르다(noooooooooob).
import java.util.Scanner;
import java.io.*;
public class test {
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
System.out.println("전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.");
System.out.print("첫번째 파일 이름을 입력하세요>>");
String f1=sc.next();
System.out.print("두번째 파일 이름을 입력하세요>>");
String f2=sc.next();
try {
@SuppressWarnings("resource")
FileReader fin1=new FileReader(f1);
@SuppressWarnings("resource")
FileReader fin2=new FileReader(f2);
System.out.println(f1+"와 "+f2+"를 비교합니다.");
int c1,value=0;
while((c1=fin1.read())!=-1) {
if(c1==fin2.read())
value=1;
}
if(value==1)
System.out.println("파일이 같습니다");
else
System.out.println("파일이 서로 다릅니다.");
} catch (IOException e) {
System.out.println("입출력 오류");
}
sc.close();}}


12. 텍스트 파일에 있는 단어를 검색하는 프로그램을 작성해보자. 실행 예시는 프로젝트 폴더 밑에 자신이 작성한 자바파일(예: test.java)을 복사하여 두고 읽은 경우이다.
test.java는 문제 5번이다.
import java.util.*;
import java.io.*;
public class twelve {
public static void main(String[]args) {
Vector<String> v=new Vector<String>();
Scanner sc=new Scanner(System.in);
System.out.println("전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.");
System.out.print("대상 파일명 입력>> ");
String name=sc.nextLine();
try {
FileReader fin=new FileReader(name);
@SuppressWarnings("resource")
BufferedReader bf=new BufferedReader(fin);
String line="";
while((line=bf.readLine())!=null) {
v.add(line);
}
while(true){
System.out.print("검색할 단어나 문장>> ");
String src=sc.nextLine();
if(src.equals("그만"))
break;
for(int i=0;i<v.size();i++) {
if(v.get(i).contains(src))
System.out.println((int)i+1+":"+v.get(i));
}
}
} catch (IOException e) {
System.out.println("파일이 없습니다.");
}
sc.close();
System.out.println("프로그램을 종료합니다.");
}}

13. 간단한 파일 탐색기를 만들어보자. 처음 시작은 c:\에서부터 시작한다. 명령은 크게 2가지로서 ".."를 입력하면 부모 디렉터리로 이동하고, "디렉터리명"을 입력하면 서브 디렉터리로 이동하여 파일리스트를 보여준다.
import java.util.Scanner;
import java.io.*;
public class thirteen {
static void list(File f) {
System.out.println(" ["+f.getPath()+"]");
File[] subfiles=f.listFiles();
for(int i=0;i<subfiles.length;i++)
if(subfiles[i].isDirectory())
System.out.printf("dir%15d바이트\t\t%s\n",subfiles[i].length(),subfiles[i].getName());
else if(subfiles[i].isFile())
System.out.printf("file%14d바이트\t\t%s\n",subfiles[i].length(),subfiles[i].getName());}
public static void main(String[]args) {
System.out.println("***** 파일 탐색기입니다. *****");
String name="C:\\";
File f=new File(name);
list(f);
Scanner sc=new Scanner(System.in);
while(true) {
System.out.print(">>");
String adr=sc.nextLine();
if(adr.equals("그만"))
break;
else if(adr.equals(".."))
f=f.getParentFile();
else
{name=name+adr+"\\";f=new File(name);}
list(f);
}
sc.close();
}}

'JAVA > 공부' 카테고리의 다른 글
10. 자바의 이벤트 처리 (0) | 2021.01.19 |
---|---|
9. 자바 GUI 기초, AWT와 스윙(Swing) (0) | 2021.01.19 |
7. 제네릭과 컬렉션 (0) | 2021.01.16 |
6. 모듈과 패키지 개념, 자바 기본 패키지 (0) | 2021.01.14 |
5. 상속 (0) | 2021.01.14 |