java.io.InputStream과 같은 종류의 관계를 그림으로 삼다

7692 단어 Java

개시하다


자바SE7 이후 유용한 학급이 늘어 직접 접촉java.io하는 학급이 줄었다.그런데 며칠 전에 오랜만에 생용InputStream했는데 사용법을 몰라서 투덜거려서 그림을 썼어요.
사용하지 않은 학급도 많은데 실제로 이런 용법이 있다는 말이 있으면 댓글로 남겨주세요.

정리의 결과


아래와 같다.
그러나 이것은 알기 쉬운 것을 중시하는 것으로 정확하지 않다.
이유는 뒤에 서술한다.

읽기(InputStream, Reader)



쓰기(OutStream, Writer)



정확하게 쓸 이유가 없어요.


여러 가지 이유가 있기 때문에 일부러 부정확하다.

못 들어간 반.


이하의 반은 없다.

추천하지 않는 반

  • LineNumberInputStream
  • StringBufferInputStream
  • 이 두 개는 디자인 오류로 추천하지 않기 때문에 제외한다.
    LineNumberInputStream
    이 종류는 잘못된 인식을 전제로 하는 것이다. 즉, 문자가 바이트에 의해 적절하게 표현되는 것이다.
    StringBufferInputStream
    이 분류에서 문자를 바이트로 바꾸는 것은 올바르지 않습니다.

    필터

  • FilterInputStream
  • FilterOutputStream
  • 이 두 개는 따로 사용하지 않아 제외됐다.왜 abstract로 설계되지 않았을까요?그렇게 생각하지만 다른 사람들이 같은 의문을 가지고 있는 것 같아요.
    java - Why FilterInputStream is not Abstract Class - Stack Overflow
    나 원래 이거 필요 없어.

    그림에 안 들어갔을 뿐이에요.

  • 파이프 관련
  • FilterOutputStream
  • PipedInputStream
  • PipedOutputStream
  • PipedReader
  • PipedWriter
  • 이것들은 적당한 위치를 찾지 못해서 제외되었다.
    아마 파이프는 독립된 그림이 좋을 것 같아요.
    사용한 적SequenceInputStream은 없지만, 연결SequenceInputStream된 특수반이라 그림에 넣어도 구석에 외톨이가 된다.

    상속 관계 기재 안 함


    예를 들어InputStreamDataInputStream상속ObjectInputStream했지만 생략했다.InputStream,DataOutputStream계승ObjectOutputStream했지만 생략했습니다.
    왜 그랬을까, 원시형, 대상을 읽고 쓰기 위해 사용했기 때문에OutputStream 다른 사람에게 맡길 장면은 없는 것 같다.
    만약 이것InputStream이라면'처음 바이트를 읽고 파일 형식을 자동으로 판별한 후 내용을 PushbackInputStream로 읽는다'는 사용 방법을 생각해 볼 수 있다.
    그리고 InputStream 직접 계승ObjectInputStream했지만 InputStream 중간에 끼어 있는 것도 이해하기 어려운 이유다.또 다른 사람들이 같은 의문을 가지고 있는 것 같다.
  • DataInputStream
  • 정리하고 발견한 일.


    명명 규칙은 이해하기 어렵다.

  • 소스/출력 대상
  • 필터
  • 가공
  • 이것들은 모두 XXXInputStream,XXXOutputStream,XXXReader,XXXWriter의 명명 규칙이다.그래서 구별하기 어려워 혼란을 초래했다.

    인코딩 처리 불일치


    그림의 배경에 색을 더한 세 가지 종류에 대해 인코딩 처리가 미묘하다.
    FilterInputStream, java - Shouldn't ObjectInputStream extend FilterInputStream? - Stack Overflow에 지정된 인코딩이 없는 구조기.그러니 그림에 넣었지만 무시하는 게 좋을 거야.FileReader도 느리다고 했는데 지금FileWriter이 있어요.
  • FileReader
  • Files#newBufferedReader 있어서파일 읽기가 가장 좋은 것은 무엇입니까 (Java) - Qita 사용법을 잘 모르겠어요.
    Print Writer 클래스는 바이트 대신 문자를 써야 하는 경우에 사용됩니다.
    다만 PrintStreamPrintWriter를 위해 남는다면?내 생각엔

    끝말


    그림을 만들어 보니 의외로 간단하다ω`)
    그리고 링크를 붙이는 데 시간이 좀 걸리는 게 어떨까 싶어(´...ω・‘)

    좋은 웹페이지 즐겨찾기