>  기사  >  Java  >  Java의 IO 스트림 정보: 스트림 상속 관계, 처리 스트림 및 변환 스트림

Java의 IO 스트림 정보: 스트림 상속 관계, 처리 스트림 및 변환 스트림

php是最好的语言
php是最好的语言원래의
2018-08-04 14:29:241893검색

1. 스트림과 바이트 스트림, 문자 스트림의 상속 관계.

2. 노드는 FileOutputStream 및 FileInputStream을 스트리밍하고 BufferedInputStream 및 BufferedOutputStream을 처리합니다. 그리고 해당 FileOutputWriter, FileInputReader, BufferedInputReader, BufferedOutputWriter.

3. 스트림 변환 InputStreamReader 및 OutputStreamWriter

1: 스트림의 상속 관계

바이트 스트림

문자 스트림

사용 범위: 바이트 스트림 일반 이미지, 동영상, PPT, Word 형태의 파일을 처리합니다. 문자 스트림은 일반적으로 TXT 파일 등 일반 텍스트 파일을 처리하는 데 사용됩니다. 바이트 스트림은 일반 텍스트 파일을 처리하는 데 사용할 수 있지만, 문자 스트림은 이미지, 비디오 등 텍스트가 아닌 파일을 처리하는 데 사용할 수 없습니다.

두 가지: 처리 스트림 BufferedReader, BufferedWriter, BufferedInputStream

BufferedOutputsStream은 노드 스트림의 상위 계층을 포함해야 합니다. 즉, 처리 스트림은 노드 스트림을 기반으로 하며, 버퍼링된 스트림은 파일의 입력과 출력을 가장 빠르게 처리합니다. 따라서 일반적으로 버퍼링된 스트림이 더 자주 사용됩니다.

다음은 파일 복사에 대한 두 가지 간단한 예입니다.

    }catch(IOException e) {

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

공개 클래스 MycopyTest {public class MycopyTest {

  public static void main(String[] args) {

    File src = new File("D:/1.jpg");

    // D:/1.jpg必须的存在不然会报错

    File dest = new File("D:/2.jpg");

    // 如果D:/2.jpg存在则覆盖,如果不存在则新建

    streamCopy(src, dest);

  }

private static void readCopy(File src,File dest)


  {

    FileReader fr=null;

    FileWriter fw=null;

    BufferedReader br=null;

    BufferedWriter bw=null;

    try {

      fr=new FileReader(src);

      fw=new FileWriter(dest);

      br=new BufferedReader(fr);

      bw=new BufferedWriter(fw);

      String str;

      while((str=br.readLine())!=null)

      {

        bw.write(str);

public static void main(String[] args) {🎜 🎜 파일 src = 파일("D:/1.jpg" );🎜 🎜 // D:/1.jpg가 있어야 합니다. 그렇지 않으면 오류가 보고됩니다🎜 🎜 파일 대상 = 파일("D:/2.jpg" );🎜 🎜 // D:/2.jpg가 있으면 덮어쓰고 없으면 새로 만듭니다🎜 🎜 streamCopy(src, dest);🎜 🎜 }🎜 🎜비공개 정적 void readCopy(파일 src,파일 대상)🎜🎜🎜🎜 🎜 {🎜 🎜 FileReader fr=null;🎜 🎜 FileWriter fw=null;🎜 🎜 BufferedReader br=null;🎜 🎜 BufferedWriter bw=null;🎜 🎜 시도해보세요 {🎜 🎜 fr= FileReader(src);🎜 🎜 fw=new FileWriter(dest);🎜 🎜 br= BufferedReader(fr);🎜 🎜 bw= BufferedWriter(fw);🎜 🎜 문자열 문자열;🎜 🎜 while((str=br.readLine())!=null)🎜 🎜 {🎜 🎜 bw.write(str);🎜

        bw.newLine();        bw.newLine();

      }

    }catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

    try {

      bw.close();

      br.close();

    } catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

 

  }

  private static void streamCopy(File src, File dest) {

    FileInputStream fis = null;

    FileOutputStream fos = null;

    BufferedInputStream bis = null;

    BufferedOutputStream bos = null;

    try {

      fis = new FileInputStream(src);

      fos = new FileOutputStream(dest);

      bis = new BufferedInputStream(fis);

      bos = new BufferedOutputStream(fos);

      int len;

      byte[] b = new byte[1024];

      while ((len = bis.read(b)) != -1) {

        bos.write(b, 0, len);

        // bos.write(b,0,len);是把读到数组的大小字节写入

        // bos.write(b);最后一次如果数组未写满的话就会多读。

      }

    } catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

    try {

      bos.close();

      bis.close();

    } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

  }

}

      }
      // TODO 자동 생성된 catch 블록#🎜🎜# #🎜🎜#      e.printStackTrace();#🎜🎜# #🎜🎜#    }#🎜🎜# #🎜🎜#    시도 {#🎜🎜# #🎜🎜#      bw.close();#🎜🎜# #🎜🎜#      br.close();#🎜🎜# #🎜🎜#    } catch (IOException e) {#🎜🎜# #🎜🎜#      // TODO 자동 생성된 catch 블록#🎜🎜# #🎜🎜#      e.printStackTrace();#🎜🎜# #🎜🎜#    }#🎜🎜# #🎜🎜# #🎜🎜# #🎜🎜#  }#🎜🎜# #🎜🎜#  private static void streamCopy(파일 src, 파일 대상) {#🎜🎜# #🎜🎜#    FileInputStream fis = null;#🎜🎜# #🎜🎜#    FileOutputStream fos = null;#🎜🎜# #🎜🎜#    BufferedInputStream bis = null;#🎜🎜# #🎜🎜#    BufferedOutputStream bos = null;#🎜🎜# #🎜🎜#    시도 {#🎜🎜# #🎜🎜#      fis = new FileInputStream(src);#🎜🎜# #🎜🎜#      fos = new FileOutputStream(dest);#🎜🎜# #🎜🎜#      bis = new BufferedInputStream(fis);#🎜🎜# #🎜🎜#      bos = new BufferedOutputStream(fos);#🎜🎜# #🎜🎜#      int len;#🎜🎜# #🎜🎜#      바이트[] b = 바이트[ 1024];#🎜🎜# #🎜🎜#      동안 ((len = bis.read(b)) != -1) {#🎜🎜# #🎜🎜#        bos.write(b, 0, len);#🎜🎜# #🎜🎜#        // bos.write(b,0,len);是把读到数组的大小字节写入#🎜🎜# #🎜🎜#        // bos.write(b);最后一次如果数组未写满的话就会多读。#🎜🎜# #🎜🎜#      }#🎜🎜# #🎜🎜#    } catch (IOException e) {#🎜🎜# #🎜🎜#      // TODO 자동 생성된 catch 블록#🎜🎜# #🎜🎜#      e.printStackTrace();#🎜🎜# #🎜🎜#    }#🎜🎜# #🎜🎜#    시도 {#🎜🎜# #🎜🎜#      bos.close();#🎜🎜# #🎜🎜#      bis.close();#🎜🎜# #🎜🎜#    } catch (예외 e) {#🎜🎜# #🎜🎜#      // TODO 자동 생성된 catch 블록#🎜🎜# #🎜🎜#      e.printStackTrace();#🎜🎜# #🎜🎜#    }#🎜🎜# #🎜🎜#  }#🎜🎜# #🎜🎜#}#🎜🎜# #🎜🎜# #🎜🎜##🎜🎜##🎜🎜#

3 문자 스트림은 바이트 스트림으로 변환되어 OutputStreamWriter를 통해 저장됩니다.

1

23 BufferedReader br = null; FileInputStream fis = null;
4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

공개 클래스 InputStreamWriterTest {

public static void main(String[] args) {

파일 src = 파일("D:/Files/Shit.txt" 코드>);
파일 대상 = 파일("D:/Files/Smith.txt");

public class InputStreamWriterTest {

  public static void main(String[] args) {

    File src = new File("D:/Files/狗屁.txt");

    File dest = new File("D:/Files/斯密斯.txt");

    BufferedWriter bw = null;

    BufferedReader br = null;

    FileInputStream fis = null;

    FileOutputStream fos = null;

    try {

      fis = new FileInputStream(src);

      fos = new FileOutputStream(dest);

      InputStreamReader ir = new InputStreamReader(fis, "GBK");

      OutputStreamWriter ow = new OutputStreamWriter(fos, "GBK");

      bw = new BufferedWriter(ow);

      br = new BufferedReader(ir);

      String str;

      while ((str = br.readLine()) != null) {

        bw.write(str);

        bw.newLine();

        bw.flush();

      }

    } catch (IOException e) {

      e.printStackTrace();

    }

    try {

      bw.close();

      br.close();

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

} BufferedWriter bw = null;

🎜 FileOutputStream fos = null;🎜 🎜 시도해보세요 {🎜 🎜 fis = new FileInputStream(src);🎜 🎜 fos = FileOutputStream(dest);🎜 🎜 InputStreamReader ir = new InputStreamReader(fis, "GBK" );🎜 🎜 OutputStreamWriter ow = new OutputStreamWriter(fos, "GBK" );🎜 🎜 bw = BufferedWriter(ow);🎜 🎜 br = BufferedReader(ir);🎜 🎜 문자열 문자열🎜 🎜 while ((str = br.readLine()) != null) { 코드> 코드>🎜 🎜 bw.write(str);🎜 🎜 bw.newLine();🎜 🎜 bw.flush();🎜 🎜 }🎜 🎜 } catch (IOException e) {🎜 🎜 e.printStackTrace();🎜 🎜 }🎜 🎜 시도해보세요 {🎜 🎜 bw.close();🎜 🎜 br.close();🎜 🎜 } catch (IOException e) {🎜 🎜 e.printStackTrace();🎜 🎜 }🎜 🎜 }🎜 🎜}🎜 🎜 🎜🎜🎜

관련 기사:

java IO 스트림 출력 스트림 사용 OutputString()

Java의 IO 스트림에 대한 포괄적인 소개

관련 동영상:

최신 Java 전체 동영상 튜토리얼 - 무료 온라인 동영상 튜토리얼

위 내용은 Java의 IO 스트림 정보: 스트림 상속 관계, 처리 스트림 및 변환 스트림의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.