JavaIO Review

ColinSong·2020년 11월 22일
0

Java

목록 보기
3/4
post-thumbnail

JavaIO에 대해 복습하는 시간을 가졌는데, ByteExample2의 문제점이 생겼다!
copy.txt을 지우고 해봤는데도 똑같은 문제가 발생한다....😂
이 부분은 추후에 어떤 문제 때문에 copy가 반복되는지 확인해 봐야겠다.

목차

JavaIO Review

  • TIL 20.11.21 복습

1. Byte 출력

1.1. ByteExam1

  • FileInputStream
  • FileOutputStream
  • read()
import java.io.*;
public class ByteExam1 {
    public static void main(String[] args){
        try(
        FileInputStream fis = new FileInputStream("src/ByteExam1.java");
        FileOutputStream fos = new FileOutputStream("copy.txt");
        ) {
            int readCount;
            while((readCount = fis.read()) != -1) {
               fos.write(readCount);
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

1.2. copy.txt

2.1 ByteExample2

2.1.1 문제점 -> copy.txt가 ByteExam2을 반복함.. ?!!!

  • FileInputStream
  • FileOutputStream
  • read(byte[] b)
import java.io.*;
public class ByteExam2 {
    public static void main(String[] args) {
        try(
                FileInputStream fis = new FileInputStream("src/ByteExam2.java");
                FileOutputStream fos = new FileOutputStream("copy.txt");
                ) {
                int readCount;
                byte[] buffer = new byte[512];
                while((readCount = fis.read(buffer)) != -1) {
                    fos.write(buffer);
                }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

2.1.1. copy.txt

import java.io.*;
public class ByteExam2 {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("src/ByteExam2.java");
            fos = new FileOutputStream("copy.txt");
            int readCount;
            byte[] buffer = new byte[512];
            while((readCount = fis.read(buffer)) != -1) {
                fos.write(buffer);
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                fis.close();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
        // 왜... 반복하는걸까...?
        fos = new FileOutputStream("copy.txt");
            int readCount;
            byte[] buffer = new byte[512];
            while((readCount = fis.read(buffer)) != -1) {
                fos.write(buffer);
            }
        }catch(Exception e //잘림

  • byte배열 크기를 4096으로 하면 밑에 NULLNULLNULL로 뜬다.

3. 다양한 출력 방식

  • DataInputStream
  • DataOutputStream
  • writeInt()
  • writeBoolean()
  • writeDouble()
import java.io.*;
public class ByteExam3 {
    public static void main(String[] args) {
        DataOutputStream dos = null;
        try {
            // 파일을 저장할 경로 설정
            dos = new DataOutputStream(new FileOutputStream("copy.txt")); 
            // 파일에 쓸 내용 
            int int_i = 3; // 4byte
            boolean boolean_b = true; // 1byte
            Double double_d = 3.14; // 8byte
            dos.writeInt(int_i);
            dos.writeBoolean(boolean_b);
            dos.writeDouble(double_d);
        }catch(Exception e){
           e.printStackTrace();
       }finally {
            try {
                dos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
       }
    }
}

3.1.1. copy.txt

  • 인코딩은 아래처럼 나온다.

3.1.2. copy.txt 파일 크기

  • 13byte
  • int + boolean + double

2. 문자열 출력

2.1. CharExam1

public class CharExam1 {
    public static void main(String[] args) {
        BufferedReader br = null;
        PrintWriter pw = null;
        try {
            br = new BufferedReader(new FileReader("src/byteExam1.java"));
            pw = new PrintWriter(new FileWriter("copy.txt"));
            String line = null;
            while((line = br.readLine()) != null) {
                pw.write(line+"\n"); // \n을 붙이지 않으면 다 연결되서 나온다.
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
           pw.close();
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

2.2. copy.txt

References

profile
안녕하세요:)

0개의 댓글