배효철 th1g@nate.com 1
목차 표준입출력 파일입출력 2
표준입출력 표준입력은키보드로입력하는것, 주로 Scanner 클래스를사용. 표준출력은화면에출력하는메소드를사용하는데대표적으로 System.out.printf( ) 를사용 3
표준입출력 표준출력 : System.out.printlf() 4
표준입출력 Example 01 public static void main(string[] args) { int a = 1234 ; float b = 100.12345f ; char ch = 'K' ; String s = "IT_JAVA" ; System.out.printf(" 정수의 10 진수 ==> %d\n", a) ; System.out.printf(" 정수의 16 진수 ==> %d\n", a) ; System.out.printf(" 정수의 8 진수 ==> %d\n", a) ; System.out.printf(" 실수 ==> %10.3f\n", b) ; System.out.printf(" 실수 ( 공학용 )==> %e\n", b) ; System.out.printf(" 문자 ==> %c\n", ch) ; System.out.printf(" 문자열 ==> %s\n", s) ; 5
표준입출력 표준입력 : Scanner 6
import java.util.scanner; 표준입출력 public class Example02 { public static void main(string[] args) { Scanner s = new Scanner(System.in) ; byte a ; short b ; int c ; long d ; float e ; double f ; String str1, str2 ; Example 02 7 System.out.print("byte : "); a = s.nextbyte() ; System.out.print("short : "); b = s.nextshort() ; System.out.print("int : "); c = s.nextint() ; System.out.print("long : "); d = s.nextlong() ; System.out.print("float : "); e = s.nextfloat() ; System.out.print("double : "); f = s.nextdouble() ; System.out.print("str1 : "); str1 = s.next() ; System.out.print("str2 : "); str2 = s.nextline();
표준입출력 Example 02 8
표준입출력 Example 03 import java.util.scanner; public class Example03 { public static void main(string[] args) { Scanner s = new Scanner(System.in) ; String str1, str2, str3 ; str1 = s.next(); str2 = s.next(); str3 = s.next(); System.out.print(" 입력된문자열 ==> "); System.out.print(str1 + "," + str2 + "," + str3); 9
표준import 입출력 java.io.ioexception; public class Example04 { public static void main(string[] args) { String username = "hanbit" ; String input = "" ; int key ; 10 System.out.print(" 이름 ==> "); try { while ((key = System.in.read())!= 13) { input += Character.toString((char)key); if (username.equals(input)) System.out.println(input + " 님어서오세요 ~~") ; else System.out.println(input + " 님등록이안되었습니다 ~~") ; catch (IOException e) { e.printstacktrace();
File 클래스 파일시스템의파일을표현하는클래스 파일크기, 파일속성, 파일이름등의정보제공 파일생성및삭제기능제공 디렉토리생성, 디렉토리에존재하는파일리스트얻어내는기능제공 파일객체생성 파일또는디렉토리존재유무확인메소드 파일및디렉토리생성및삭제메소드 11
파일및디렉토리의정보를리턴하는메소드 12
파일입출력메소드는입력과출력을표준입출력장치가아닌파일로처리하는메소드 13
스트림 (stream) 스트림은데이터를송수신하기위한통로의개념으로서입력혹은출력, 한쪽방향으로만진행된다. 스트림은 1 바이트를처리하는바이트스트림과 2 바이트를처리하는문자스트림으로나뉜다. FileInputStream, FileOutputStream 은바이트스트림에해당하고, BufferedReader, BufferedWriter,FileReader, FileWriter 는문자스트림에해당한다. 한글은 2 바이트이므로문자스트림을사용하는것이더편리하다. 14
파일입출력의기본과정 파일열기 (1 단계 ) 파일처리 (2 단계 ) 데이터를쓰거나파일로부터데이터를읽어올수있는상태 파일닫기 (3 단계 ) 15
파일을이용한입력 16
1 바이트씩읽어들이기 FileInputStream 클래스를사용하면파일의내용을 1 바이트씩읽음. 1 바이트씩읽어오는메소드는 read( ) 메모장을실행하여 File Read Sample 입니다. 라는문장을한줄쓰고파일명을 c:\temp\data1.txt 로하여저장 17
Example05 import java.io.fileinputstream; public class Example05 { public static void main(string[] args) throws Exception { FileInputStream fis = new FileInputStream("c:/temp/data1.txt") ; int ch ; while ((ch = fis.read())!= -1) System.out.print((char)ch); fis.close(); 18
import java.io.fileinputstream; public class Example06 { public static void main(string[] args) throws Exception { FileInputStream fis = new FileInputStream("c:/temp/data1.txt") ; int i = 0 ; int ch ; byte[] bt = new byte[1024] ; while ((ch = fis.read())!= -1) { bt[i] = (byte)ch ; i++ ; System.out.print(new String(bt)); fis.close(); 19
도스명령어 type 의구현 [ 시작 ] [ 모든프로그램 ] [ 보조프로그램 ] [ 명령프롬프트 ] 를실행하거나또는 [ 시작 ] [ 실행 ] 을선택한후 cmd 명령을입력하여명령프롬프트를오픈 프로그램순서 20
Example07 import java.io.bufferedreader; import java.io.filereader; public class Example07 { public static void main(string[] args) throws Exception { FileReader freader = new FileReader("c:/Windows/win.ini") ; BufferedReader breader = new BufferedReader(fReader) ; String str = null ; 21 while ((str = breader.readline())!= null) { System.out.println(str); breader.close(); freader.close();
Scanner 를이용한파일읽기 여러줄에숫자가쓰인파일의합계를내는코드를작성하기 다음과같이다섯줄의숫자를메모장에쓰고파일명을 data2.txt 로저장 22
Example08 import java.io.file; import java.util.scanner; public class Example08 { public static void main(string[] args) throws Exception { Scanner sc = new Scanner(new File("c:/temp/data2.txt")) ; int hap = 0 ; while (sc.hasnextline()) hap += sc.nextint(); System.out.println(" 합계 : " + hap); sc.close(); 23
파일을이용한출력 24
FileOutputStream 을이용하여 1 바이트씩파일에쓰기 import java.io.fileoutputstream; public class Example09 { public static void main(string[] args) throws Exception { FileOutputStream fos = new FileOutputStream("c:/temp/data3.txt") ; int ch ; while((ch = System.in.read())!= 13) fos.write((byte)ch); fos.close(); 25
Example10 import java.io.filewriter; import java.util.scanner; public class Example10 { public static void main(string[] args) throws Exception { Scanner sc = new Scanner(System.in) ; FileWriter fw = new FileWriter("c:/temp/data4.txt") ; String str ; while(!(str = sc.nextline()).equals("")) fw.write(str+"\r\n"); fw.close(); 26
도스명령어 copy 의구현 [ 시작 ] [ 모든프로그램 ] [ 보조프로그램 ] [ 명령프롬프트 ] 를실행하거나또는 [ 시작 ] [ 실행 ] 을선택한후 cmd 명령을입력하여명령프롬프트를오픈 27
28
import java.io.fileinputstream; import java.io.fileoutputstream; public class Example11 { public static void main(string[] args) throws Exception { FileInputStream fis = new FileInputStream("c:/Windows/win.ini"); FileOutputStream fos = new FileOutputStream("c:/temp/data5.txt"); int data = 0; while ((data = fis.read())!= -1) fos.write(data); System.out.println(" 복사완료 ") ; fis.close(); fos.close(); 29
명령프롬프트에서실행할때파일이름입력받기 명령프롬프트에서다음과같이 *.class 파일이실행되도록코드를작성 JAVA 바이트코드 (*.class) 를다음과같은형식으로실행 30
import java.io.fileinputstream; import java.io.fileoutputstream; public class Example12 { public static void main(string[] args) throws Exception { FileInputStream fis = new FileInputStream(args[0]); FileOutputStream fos = new FileOutputStream(args[1]); int data = 0; while ((data = fis.read())!= -1) fos.write(data); System.out.println(" 복사완료 ") ; fis.close(); fos.close(); 31
이클립스에서명령프롬프트의파라미터사용하기 이클립스에서 main ( ) 메소드의파라미터를사용할때는실행전에파라미터를지정해놓아야한다. 이클립스메뉴 [Run] [Run Configurations] 를선택하여 [Arguments] 부분에명령프롬프트에서전달할파라미터를차례로쓰고 [Run] 을클릭하면명령프롬프트와동일하게실행된다. 32