import java.io.*;
//- 데이터소스: 파일
//- 데이터목적지: 파일, 도스콘솔
//- Node Stream: FileReader/FileWriter/ System.out
//- Filter Stream: BufferedReader/BufferedWriter/PrintWriter
import java.io.*;
class FileCopyAndConsoleOut
{
public static void main(String[] args) throws IOException
{
String sourceFile=args[0];//명령줄인수 하나: 읽을 파일명
String targetFile="target.txt";
//파일과 노드 연결--
FileReader fr=new FileReader(sourceFile);
//파일을 읽는 스트림: 두바이트 단위로...
FileWriter fw=new FileWriter(targetFile);
//파일에 쓰는 스트림: 두바이트 단위로...
//필터링-BufferedReader/BufferedWriter와 연결
//버퍼에 모아서 읽고 버퍼에 모아서 쓰기 작업
//기본버퍼: 512byte
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(fw);
/*PrintWriter pw=new PrintWriter(
new OutputStreamWriter(System.out));*/
PrintWriter pw=new PrintWriter(System.out, true);
//도스 콘솔에 읽은 파일내용을 출력해보자.
//생성자에 true값을 넣어주면 auto flushing이 지원된다.
//줄바꿈을 지원하는 메소드가 있다.--> println()
String line="";
//파일에 줄번호 (1: xxx )를 붙여서 출력하자.
//콘솔에는 줄번호를 붙이고...모두 대문자로 바뀌어서 출력
int num=0;
while((line=br.readLine())!=null){
num++;
///////////////////
pw.println(num+": "+line.toUpperCase());//콘솔에 출력
//////////////////
bw.write(num+": "+line);//파일에 출력
bw.newLine();
bw.flush();
}//-----------
pw.println(targetFile+"을 열어보세요^^");
br.close(); bw.close(); pw.close();
fr.close(); fw.close();
}//main()--------
}