1)OutputStream
package practice0502Output;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class OutputStreamTest {
public static void main(String[] args) {
InputStream is = System.in;
OutputStream out = System.out;
System.out.print("데이터 입력");
int input;
try {
//입력스트림 객체의 read메소드로 1바이트씩 읽어 들인다
input = is.read();
System.out.println("실제 입력된 데이터: " +input);
//출력스트림 객체의 write메소드로 1바이트씩 문자로 캐스팅해서 출력
System.out.print("출력데이터 :");
out.write((char)input);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2)OutputStreamWriter -2바이트 처리한대
package practice0502Output;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class OutputWriterTest {
public static void main(String[] args) {
// 10개의 문자를 기억할 수 있는 배열 선언
char[] arr = new char[10];
// 키보드로 입력스트림 리더 객체에 할당하고, 콘솔을 출력 스트림 라이터 객체에 할당
InputStreamReader isr = new InputStreamReader(System.in);
OutputStreamWriter osw = new OutputStreamWriter(System.out);
System.out.print("데이터 입력");
try {
// 10개의 문자를 읽어 배열에 저장
int input = isr.read(arr);
System.out.print("실제 입력된 글자: " + input);
// 배열 내의 10개 문자를 출력
osw.write(arr);
osw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

3)FileOutputStream
package practice0502Output;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest {
public static void main(String[] args) throws FileNotFoundException {
FileInputStream fis ;
try {
fis = new FileInputStream("sample.txt");
FileOutputStream fos = new FileOutputStream("b.txt");
int inputData = 0;
while ((inputData = fis.read()) != -1) {
fos.write(inputData);
}
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4)FileWriter
package practice0502Output;
import java.io.FileReader;
import java.io.FileWriter;
public class FileWriterTest {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("sample.txt");
FileWriter fw = new FileWriter("b.txt",true);
int inputData = 0;
while((inputData = fr.read()) != -1) {
//2바이트씩 읽고 기록하되 기존 파일의 데이터 뒤에 덧붙여 기록
fw.write(inputData);
}
fr.close();
fw.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}

5)BufferedOutputStream
package practice0502Output;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
public class BufferedOutputStreamTest {
public static void main(String[] args) {
// 파일을 인수로 FileOutputStream 객체를 생성하고
// 그 객체를 인수로 BufferedOutputStream 객체를 생성한다
try {
FileOutputStream fos = new FileOutputStream("s.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
//a~z 문자를 기록한다
//실제 파일에 기록되는 것이 아니라 버퍼에 기록된다
for(int i ='a'; i<='z'; i++) {
bos.write(i);
}
//버퍼에 기록된 데이터를 실제 파일에 기록한다
bos.flush(); //버퍼 비우는거
fos.close();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
6)BufferedWriter
package practice0502Output;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.StringTokenizer;
public class BufferedWriterTest {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("sample.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("out.txt");
BufferedWriter bw = new BufferedWriter(fw);
// 버퍼에서 파일을 라인단위로 읽는다.
String line = br.readLine();
while (line != null) {
// 읽은 라인을 공백을 기준으로 토큰으로 구분하는 객체를 생성한다. (공백이 기준이므로 단어 단위가 토큰이 된다)
StringTokenizer st = new StringTokenizer(line, " ");
// line : 우리는 자바 언어를 학습합니다.
// st : [우리는, 자바, 언어를, 학습합니다.]
while (st.hasMoreTokens()) {
// 읽을 라인 내에 '자바'라는 단어가 있으면 출력 버퍼에 기록하고, 버퍼의 내용을 파일에 기록한다.
if (st.nextToken().equals("자바")) {
bw.write(line);
bw.flush();
bw.newLine();
break;
}
}
line = br.readLine(); // line 값을 바꿔줘야 해서 반복문 안에 한번 더 들어간다.
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
7)DataOutputStream
package practice0502Output;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
//데이터를 입출력할 때 int, float와 같은 자바의 기본 데이터형을 유지하면서 입출력 할 수 있다
//파일에 기록될 때는 이진 데이터로 기록되기 때문에 파일을 열어봐도 알 수 없는 문자가
//표시되나, 기본형으로 데이터를 다룰 수 있다는 점이 특징
//네트워크 프로그래밍에서 사용된다
public class DataIoTest {
public static void main(String[] args) {
File file = new File("temp.txt");
try {
FileOutputStream fos = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(fos);
//데이터의 기본형을 유지하면서 파일에 데이터가 기록된다
dos.writeBoolean(true);
dos.writeChar('j');
dos.writeInt(1234);
dos.writeFloat(3.14F);
dos.writeDouble(123.424);
dos.writeUTF("java");
//temp.txt파일을 입력파일로 갖는 dis객체를 생성
FileInputStream fis = new FileInputStream(file);
DataInputStream dis = new DataInputStream(fis);
//데이터의 기본형을 유지하면서 파일에서 데이터를 읽어 출력
System.out.println(dis.readBoolean());
System.out.println(dis.readChar());
System.out.println(dis.readInt());
System.out.println(dis.readFloat());
System.out.println(dis.readDouble());
System.out.println(dis.readUTF());
}catch(Exception e ) {
e.printStackTrace();
}
}
}
8)ObjectOutputStream
package practice0502Output;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class PersonInfo implements Serializable {
String name;
String city;
int age;
public PersonInfo(String name, String city, int age) {
this.name = name;
this.city = city;
this.age = age;
}
public String toString() {
return name + " : " + city + " : " + age;
}
}
public class SerialTest {
public static void main(String[] args) {
try {
// 직렬화된 객체를 2진수로 기록할 파일을 지정하여
// 객체를 기록할 수 있는 ObjectOutputStream 객체를 생성한다
FileOutputStream fos = new FileOutputStream("PersonInfo.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
// 직렬화된 객체 2개 생성
PersonInfo p1 = new PersonInfo("짱구","LA", 52);
PersonInfo p2 = new PersonInfo("흰둥이","흰둥이집", 10);
//직렬화된 객체를 파일에 2진수로 기록한다
oos.writeObject(p1);
oos.writeObject(p2);
oos.close();
System.out.println("객체가 파일에 직렬화되어 기록되었다");
} catch (Exception e) {
e.printStackTrace();
}
}
}
ObjectInputStream
package practice0502Output;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class DeSerialTest {
public static void main(String[] args) {
try {
//직렬화된 객체의 2진 데이터가 기록된 파일을 저장하여
//객체를 읽을 수 있는 ObjectInPutStream 객체를 생성
FileInputStream fis = new FileInputStream("PersonInfo.txt");
ObjectInputStream in = new ObjectInputStream(fis);
//readObject메소드로 직렬화된 객체의
//2진 데이터를 읽어서 객체 타입으로 캐스팅
PersonInfo p1 = (PersonInfo)in.readObject();
PersonInfo p2 = (PersonInfo)in.readObject();
System.out.println(p1);
System.out.println(p2);
in.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
'수업시간 JAVA > 이론' 카테고리의 다른 글
Thread/Process 개념 (0) | 2023.05.08 |
---|---|
InetAddress/URL/ServerSocket (0) | 2023.05.02 |
복습 파일 Input친구들 (0) | 2023.05.02 |
Map (0) | 2023.04.26 |
제네릭 (0) | 2023.04.18 |