다연이네

[days25] DataOutputStream, DataInputStream 본문

Java

[days25] DataOutputStream, DataInputStream

 다연  2020. 10. 25. 18:15
반응형

printWriter를 이용해 파일.txt에 데이터 누적해서 저장하기

package days25;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Ex13 {

	public static void main(String[] args) throws IOException {		
		
		String name = "배다연";
		int kor= 90, eng=89, mat=77, tot=kor+eng+mat;
		double avg = tot/3.0;
		String gender = "여자";
		//
		String fileName = ".\\src\\days25\\Student.txt";
		FileWriter fw = new FileWriter(fileName, true); //true: 다른학생 추가되도록 (누적) 

		
		PrintWriter pw = new PrintWriter(fw); 
		//보조스트림
		pw.printf("%s, %d %d %d %d %.2f %s\n", 
				name, kor, eng, mat, tot, avg, gender);
		 
		
		fw.flush();
		fw.close();
		
		pw.flush();
		pw.close();
		
		System.out.println("END");
	}

}

콘솔 창에 파일 내용 출력하기

package days25;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Ex13_02 {
	public static void main(String[] args) throws IOException {
		//파일 읽어와서 학생 정보 출력
		
		String fileName = ".\\src\\days25\\Student.txt";

		File file = new File(fileName);
		FileReader fr = new FileReader(file);
		BufferedReader br = new BufferedReader(fr);
		String n = null;
		while ((n=br.readLine())!=null) {
			System.out.println(n);
		}
		
		fr.close();
		br.close();
	}
}


 

 

보조스트림 - DataOutputStream을 사용해 파일.dat에 데이터 저장하기

package days25;

import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Ex13_03 {

	public static void main(String[] args) throws IOException {
		
		String name = "배다연";
		int kor= 90, eng=89, mat=77, tot=kor+eng+mat;
		double avg = tot/3.0;
		String gender = "여자";

		
		// DataInputStream, DataOutputStream 보조스트림
		String fileName = ".\\src\\days25\\Student.dat"; //ini: 설정파일
		
		FileOutputStream fos = new FileOutputStream(fileName, true);
		//보조스트림은 outputstream만 매개변수로 줄 수 있어서 FileOutputStream 선언
		DataOutputStream dos = new  DataOutputStream(fos);
		
		dos.writeUTF(name);
		dos.writeInt(kor);
		dos.writeInt(eng);
		dos.writeInt(mat);
		dos.writeInt(tot);
		dos.writeDouble(avg);
		dos.writeBoolean(gender.equals("남자")? true:false);
		dos.write('\n');
		
		
		fos.flush();
		dos.flush();
		fos.close();
		dos.close();
		
		System.out.println("END");
		
	}

}

 

DataInputStream을 사용해 읽기

package days25;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;


public class Ex13_4 {

	public static void main(String[] args) throws IOException {
		// 읽어오기...
		String name = null;
		int kor = 0, eng =0, mat =0, tot = 0;
		double avg = 0.;
		String gender = null;

		// p 886 Data[InputStream], Data[OutputStream]  보조스트림
		String fileName = ".\\src\\days25\\Student.dat";

		FileInputStream fis = new FileInputStream(fileName);
		
		BufferedInputStream bis = new BufferedInputStream(fis);
		DataInputStream  dis =  new DataInputStream(bis);
	
		
			name =dis.readUTF();
			kor = dis.readInt();
			eng = dis.readInt();
			mat = dis.readInt();
			mat = dis.readInt();
			avg = dis.readDouble();
			gender = dis.readBoolean() ? "남자" : "여자";
			
			
			String n ;
			while((n=dis.readLine())!=null){
			System.out.printf("%s,%d,%d,%d,%d,%.2f,%b\n", 
					name, kor,eng,mat,tot,avg,gender);	
			

		}
		
			fis.close();
			dis.close();



		System.out.println("= END = ");
	}

}



근데 이러면 처음에 입력했던 데이터만 계속 출력된다.. 왤까?

정말..모르겠어

반응형
Comments