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
반응형
'Programming Study > 절대JAVA' 카테고리의 다른 글
[절대JAVA]11장 프로그래밍 연습문제(2) (0) | 2018.10.05 |
---|---|
[절대JAVA]10장 프로그래밍 연습문제(2) (0) | 2018.10.03 |
[절대JAVA]10장 프로그래밍 연습문제(1) (0) | 2018.10.01 |
[절대JAVA]9장 프로그래밍 연습문제(2) (0) | 2018.09.29 |
[절대JAVA]9장 프로그래밍 연습문제(1) (0) | 2018.09.28 |
댓글