-
입출력 스트림 마무리프로그래밍/JAVA 자바 2021. 8. 29.반응형
PrintWriter = 바이트가 아닌 문자를 출력할때 사용한다.
package ioEx3; import java.io.PrintWriter; public class Ex013_PrintWirter { public static void main(String[] args) { // PrintWriter : 바이트가 아닌 문자를 출력할 때 사용 PrintWriter pw = new PrintWriter(System.out); pw.print("자바"); pw.print("오라클"); pw.println("ㅁㅇㄴㄴ"); pw.flush(); // true 옵션을 주면 flush()를 호출하거나 println()을 호출하면 출력 PrintWriter pw2 = new PrintWriter(System.out, true); pw2.print("자바"); pw2.print("오라클"); pw2.println("ㅁㅇㄴㄴ"); } }
- PrintWriter 의 객체를 만들고 출력을 할거니까 System.out
- 객체 활용해서 출력문 작성
- flush()로 출력
- 위랑 흐름은 동일하나 객체 만들때 true 옵션을 준다.
- true옵션이 있으면 println만으로도 출력이 가능하다.
BufferedWriter = 문자를 버퍼링하여 문자 출력 스트림에 저장한다.
package ioEx3; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.InputStreamReader; public class Ex014_BufferedWriter { public static void main(String[] args) { // 문자를 버퍼링하여 문자 출력 스트림에 저장 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s; try(BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"))) { System.err.println("문자열 입력 / 종료는 ctrl + z"); while((s=br.readLine()) != null) { bw.write(s); bw.newLine(); } } catch (Exception e) { e.printStackTrace(); } } }
System.err.println = > 빨간색의 결과 값이 찍힌다.
DataOutputStream
package ioEx3; import java.io.DataOutputStream; import java.io.FileOutputStream; public class Ex015_DataOutputStream { public static void main(String[] args) { // 기본 자료형의 저장이 가능 try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("test.txt"))) { dos.writeUTF("서울"); dos.writeByte(10); dos.writeChar('A'); dos.writeInt(50); dos.writeUTF("서울"); } catch (Exception e) { e.printStackTrace(); } } }
DataInputStream
package ioEx3; import java.io.DataInputStream; import java.io.FileInputStream; public class Ex016_DataInputStream { public static void main(String[] args) { // DataOutputStream으로 저장한 내용은 DataInputStream으로 읽어야 한다 . // 저장한 자료형을 순서대로 읽어 들인다. // 더이상 읽을 데이터가 없으면 EOFException 발생 try(DataInputStream dis = new DataInputStream(new FileInputStream("test.txt"))) { System.out.println(dis.readUTF()); System.out.println(dis.readByte()); System.out.println(dis.readChar()); System.out.println(dis.readInt()); System.out.println(dis.readUTF()); } catch (Exception e) { e.printStackTrace(); } } }
DataStream
package ioEx3; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Ex017_DataStream { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); Test t = new Test(); int ch; try { while(true) { do { System.out.println("1.입력 2.출력 3.종료"); ch = sc.nextInt(); } while(ch<1 || ch>3); if(ch == 3) { t.saveFile(); return; } switch(ch) { case 1 : t.add(); break; case 2 : t.printAll(); break; } } } finally { sc.close(); } } } class TestVO { private String name; private String tel; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Test { private String pathname = "address.txt"; private List<TestVO> list = new ArrayList<TestVO>(); private BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public Test() { } public void loadFile() { File f = new File(pathname); if(! f.exists()) { return; } DataInputStream dis = null; try { dis = new DataInputStream(new FileInputStream(f)); String name, tel; int age; while(true) { name = dis.readUTF(); tel = dis.readUTF(); age = dis.readInt(); TestVO vo = new TestVO(); vo.setName(name); vo.setAge(age); vo.setTel(tel); list.add(vo); } } catch (EOFException e) { // DataInputStream은 더이상 읽을 데이터가 없으면 이 오류를 발생시킴 // 따라서 여기는 코드 작성 필요없이 cath만 한다. } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { if(dis != null) { try { dis.close(); } catch (Exception e2) { // TODO: handle exception } } } } public void saveFile() { try(DataOutputStream dos = new DataOutputStream(new FileOutputStream(pathname))) { for(TestVO vo : list) { dos.writeUTF(vo.getName()); dos.writeUTF(vo.getTel()); dos.writeInt(vo.getAge()); } } catch (Exception e) { // TODO: handle exception } } public void add() { System.out.println("데이터 등록"); try { TestVO vo = new TestVO(); System.out.println("이름?"); vo.setName(br.readLine()); System.out.println("전화번호?"); vo.setTel(br.readLine()); System.out.println("나이 ? "); vo.setAge(Integer.parseInt(br.readLine())); list.add(vo); System.out.println("등록 완료"); } catch (NumberFormatException e) { System.out.println("나이는 숫자만 가능"); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } public void printAll() { System.out.println("데이터 출력"); for(TestVO vo : list) { System.out.print(vo.getName() + "\t"); System.out.print(vo.getTel() + "\t"); System.out.print(vo.getAge()); } System.out.println(); } }
이런게 있다는 형태만 봐두면 된다.
반응형'프로그래밍 > JAVA 자바' 카테고리의 다른 글
자바DB / CallableStatement (0) 2021.09.02 자바DB연동 / PreparedStatement 활용 예제 (0) 2021.08.30 자바로 DB 연동해서 작업하기 Statement 활용 예제 (0) 2021.08.27 자바로 오라클 DB 간섭하기 / Statement / ResultSet (0) 2021.08.26 입출력 스트림(6) / PrintStream (0) 2021.08.24