본문 바로가기
Programming Study/절대JAVA

[절대JAVA]11장 프로그래밍 연습문제(1)

by 푸고배 2018. 10. 4.

1. 다음 조건을 만족하도록 파일을 복사하는 프로그램을 작성하시오.

- 현재 소스 파일을 읽어 한 줄의 가장 처음에 줄 번호가 나오도록 하여 다시 새로운 파일에 복사

- 만일 MyClass.java라면 줄 번호가 있는 파일은 MyClass.num으로

<소스코드>

package Chapter11_1;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class MyClass {

	public static void main(String[] args) {
		int data;
		int num=1; //줄 번호
		//불러올 파일 경로 + 이름
		String inFname = "C:\\Users\\doqtq\\Documents\\절대JAVA\\Chapter11\\src\\Chapter11_1\\MyClass.java";
		// 새로 만들 파일 경로 + 이름
		String outFname = "C:\\Users\\doqtq\\Documents\\절대JAVA\\Chapter11\\src\\Chapter11_1\\MyNum.java";
		try {
			// 읽을 파일 이름으로 FileInputStream 생성
			FileInputStream fis = new FileInputStream(inFname);
			FileOutputStream fout = new FileOutputStream(outFname);
			// 인코딩을 위해
			InputStreamReader isr = new InputStreamReader(fis, "MS949");
			OutputStreamWriter osw = new OutputStreamWriter(fout, "MS949");
			while((data = isr.read())!= -1) {
				char c = (char)data;
				if(num==1) { // 첫 번째 줄에 번호를 매기 위한 예외 처리 
					osw.write(num+++" ");
				}
				osw.write(c);
				if(c=='\n') {
					osw.write(num+++" ");
				}
			}
			osw.flush();//OutputStreamWriter의 버퍼를 비운다. (출력한다.) 
			isr.close();
			osw.close();
			fis.close();
			fout.close();
			System.out.println(outFname+" : 파일이 생성되었습니다.");
		} catch(FileNotFoundException e) {
			System.err.println("다음 파일이 없습니다. : "+inFname);
		} catch(IOException e) {
			System.out.println(e);
		}
	}

}

 

2. 다음 조건을 만족하도록 이미지 파일을 처리하는 프로그램을 작성하시오.

- 확장자 jpg의 이미지 파일을 읽어 표준 출력에 출력

<소스코드>

package Chapter11_2;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Chapter11_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int data;
		String inFname = "C:\\Users\\doqtq\\Documents\\절대JAVA\\Chapter11\\src\\Chapter11_2\\heart.jpg";
		try {
			FileInputStream fis = new FileInputStream(inFname);
			while((data=fis.read())!=-1) {
				System.out.print((char)data);
			}
		}catch(FileNotFoundException e) {
			System.err.println("다음 파일이 없습니다 : "+inFname);
		}catch (Exception e) {
			System.out.println(e);
		}
	}

}

 

3. 다음 조건을 만족하며 현재 폴더의 하부 파일을 출력하는 프로그램을 작성하시오.

- 하부 폴더와 일반 파일을 구분하여 출력

<소스코드>

package Chapter11_3;

import java.io.File;

public class Chapter11_3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name = "C:\\Users\\doqtq\\Documents\\절대JAVA\\Chapter11\\src\\Chapter11_3";
		File f = new File(name);
		File[] flist = f.listFiles();
		for(File i : flist) {
			if(i.isDirectory()) { // 디렉터리 이면
				System.out.print("폴더 : ");
			} else { // 디렉터리가 아니면(파일이면)
				System.out.print("파일 : ");
			}
			System.out.println(i.getName());
		}
	}

}

 

4. 다음 조건을 만족하며 지정한 이름의 폴더를 생성하는 프로그램을 작성하시오.

- 명령행에서 폴더 이름을 입력받아 생성

<소스코드>

package Chapter11_4;

import java.io.File;

public class Chapter11_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String path = "C:\\Users\\doqtq\\Documents\\절대JAVA\\Chapter11\\src\\Chapter11_4";
		File f = new File(path,args[0]);
		try {
			f.mkdir();
		}catch(Exception e) {
			System.out.println(e);
		}
	}

}

 

 

※경로와 내부 구조 및 사진자료는 자체적으로 수정

 

참고자료 : 인피니티북스 절대 JAVA

github 주소 : 

https://github.com/ch1517/Network-programming/tree/master/Chapter11

반응형

댓글