1. a.jpg 파일의 크기를 화면에 출력하는 프로그램을 작성하라. 파일의 크기는 File 클래스의 length() 메소드를 이용하면 된다. a.jpg는 프로젝트 폴더 밑에 있어야 한다.
<소스코드> Chapter8_1.java
package Chapter8;
//1번
//a.jpg 파일의 크기를 화면에 출력하는 프로그램을 작성하라.
//파일의 크기는 File 클래스의 length() 메소드를 이용하면 된다.
//a.jpg는 프로젝트 폴더 밑에 있어야 한다.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class Chapter8_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("C:\\Users\\doqtq\\Documents\\Chapter8\\src\\Chapter8\\a.jpg");
// a.jpg가 저장되어 있는 경로
if(f.exists()) { // 파일이 존재할때 파일의 크기 출력
System.out.println(f.length());
} else { // 파일이 존재하지 않을 때 예외처리
System.out.println("a.jpg 파일이 없습니다.");
}
}
}
2. 텍스트 파일을 읽어 소문자로 된 영어 문자를 모두 대문자로 바꿔서 출력하는 프로그램을 버퍼 스트림을 이용하여 작성하라.
<소스코드> Chapter8_2.java
package Chapter8;
//2번
//텍스트 파일을 읽어 소문자로 된 영어 문자를 모두 대문자로 바꿔서 출력하는 프로그램을 버퍼 스트림을 이용하여 작성하라.
import java.io.BufferedOutputStream;
import java.io.FileReader;
import java.io.IOException;
public class Chapter8_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedOutputStream bout = new BufferedOutputStream(System.out,5);
// 버퍼를 가지는 스트림을 만들기
FileReader fin = null;
try {
fin = new FileReader("C:\\Users\\doqtq\\Documents\\Chapter8\\src\\Chapter8\\test1.txt");
// 텍스트 파일을 읽기
int c;
while((c=fin.read())!=-1) { // 파일의 끝을 만날 때까지 문자들 하나씩 읽기
bout.write((char)(c-32)); // 읽은 문자를 버퍼 출력 스트림에 씀
}
fin.close();
bout.close();
}catch(IOException e) { // 파일이 존재하지 않을 때 예외처리
System.out.println("test1.txt 파일이 존재하지 않습니다.");
}
}
}
3. C:\의 서브 디렉터리를 모두 출력하는 프로그램을 작성하라.
<소스코드> Chapter8_3.java
package Chapter8;
//3번
//C:\의 서브 디렉터리를 모두 출력하는 프로그램을 작성하라.
import java.io.File;
public class Chapter8_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("C:\\"); // 경로 입력
for(String s: f.list()) { // f 경로에 있는 파일과 디렉터리 이름의 리스트 얻기
File sf = new File(f,s); // f는 parent, s는 child 경로명
if(sf.isDirectory()) { // sf가 디렉토리 이면
System.out.println(sf); // sf 출력
}
}
}
}
4. 사용자로부터 두 개의 텍스트 파일 이름을 입력받고 첫 번째 파일 뒤에 두 번째 파일을 덧붙여 새로운 파일을 생성하는 프로그램을 작성하라.
<소스코드> Chapter8_4.java
<package Chapter8;
//4번
//사용자로부터 두 개의 텍스트 파일 이름을 입력받고 첫 번째 파일 뒤에 두 번째 파일을 덧붙여 새로운 파일을 생성하는 프로그램을 작성하여라.
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Chapter8_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
FileReader f1 = null; // 첫번 째 파일
FileReader f2 = null; // 두번 째 파일
FileWriter f3 = null; // 첫번 째 파일+ 두번 째 파일
try {
int c;
f1 = new FileReader("C:\\Users\\doqtq\\Documents\\Chapter8\\src\\"+s.next()+".txt");
f2 = new FileReader("C:\\Users\\doqtq\\Documents\\Chapter8\\src\\"+s.next()+".txt");
// 불러올 파일 이름을 입력받음
f3 = new FileWriter("C:\\Users\\doqtq\\Documents\\Chapter8\\src\\test3.txt");
// 새로 만들 파일을 설정해줌
while((c = f1.read())!=-1) { // f1의 내용을 f3에 담는다.
f3.write(c);
}
while((c = f2.read())!=-1) { // f2의 내용을 f3에 담는다.
f3.write(c);
}
f1.close();
f2.close();
f3.close();
// 스트림 닫기
} catch (IOException e) {
System.out.println("파일 입출력 오류");
}
}
}
/TEXTAREA> </P>
<P> </P>
<P><SPAN style="FONT-SIZE: 12pt"><STRONG>5. 사용자로부터 두 개의 파일 이름을 입력받고 두 파일의 내용을 비교하여 같으면 "파일이 같습니다."를, 틀리면 "파일이 서로 다릅니다."를 출력하는 프로그램을 작성하라. 비교 대상인 파일은 텍스트 및 바이너리 파일 모두를 포함한다.</STRONG></SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt"><소스코드> Chapter8_5.java</SPAN></P>
<P><TEXTAREA class=brush:java; name=code>package Chapter8;
//5번
//사용자로부터 두 개의 파일 이름을 입력받고 두 파일의 내용을 비교하여 같으면 "파일이 같습니다."를,
//틀리면 "파일이 서로 다릅니다."를 출력하는 프로그램을 작성하라.
//비교 대상인 파일은 텍스트 및 바이너리 파일 모두를 포함한다.
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Chapter8_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
FileInputStream f1 = null;
FileInputStream f2 = null;
int same = 0; // 같은 파일인지 다른 파일인지 구분하는 변수
try {
int a,b;
f1 = new FileInputStream("C:\\Users\\doqtq\\Documents\\Chapter8\\src\\Chapter8\\"+s.next());
f2 = new FileInputStream("C:\\Users\\doqtq\\Documents\\Chapter8\\src\\Chapter8\\"+s.next());
// 파일과 연결된 바이트 스트림 생성 (확장자까지 입력)
if(f1.available()!=f2.available()) { // 파일의 길이가 다르면
same=0; // 두 파일은 같지 않다.
} else{
same=1; // 파일의 길이가 같을 때 두 파일이 같다고 가정하고 while를 돌리면
while((a = f1.read())!=-1){ // a가 파일의 끝을 만날때까지
b = f2.read(); // b를 읽어들임
if(a!=b) { // 중간에 한글자라도 다르면
same=0; // 두 파일은 같지 않다.
break; // while문 멈춤
}
}
}
if(same==1) {
System.out.println("파일이 같습니다.");
} else {
System.out.println("파일이 다릅니다.");
}
// 출력 구문
f1.close();
f2.close();
// 스트림 닫기
} catch(IOException e) {
System.out.println("파일 입출력 오류");
}
}
}
참고자료 : 생능출판 명품 JAVA Programming
github 주소 :
https://github.com/ch1517/Masterwork-JAVA-Programming/tree/master/Chapter8/src/Chapter8
반응형
'Programming Study > 명품자바프로그래밍' 카테고리의 다른 글
[명품자바프로그래밍] 8장 Open Challenge (3) | 2018.09.29 |
---|---|
[명품자바프로그래밍] 8장 실습문제(2) (2) | 2018.09.27 |
[명품자바프로그래밍] 7장 Open Challenge (0) | 2018.09.27 |
[명품자바프로그래밍] 7장 실습문제(2) (0) | 2018.09.26 |
[명품자바프로그래밍] 7장 실습문제(1) (0) | 2018.09.26 |
댓글