Java の IO ストリームについて: ストリームの継承関係、処理ストリーム、および変換ストリーム

php是最好的语言
リリース: 2018-08-04 14:29:24
オリジナル
1899 人が閲覧しました

1. ストリーム、バイトストリーム、文字ストリームの継承関係。

2. ノード ストリーム FileOutputStream および FileInputStream と処理ストリーム BufferedInputStream および BufferedOutputStream。そして、対応する FileOutputWriter、FileInputReader、BufferedInputReader、BufferedOutputWriter。

3. ストリームの変換InputStreamReaderとOutputStreamWriter

1:ストリームの継承関係

バイトストリーム

文字ストリームとバイトストリームの使用範囲:バイトストリーム全般画像、ビデオ、PPT、Word タイプのファイルを処理します。文字ストリームは通常、TXT ファイルなどのプレーン テキスト ファイルの処理に使用されます。バイト ストリームはプレーン テキスト ファイルの処理に使用できますが、文字ストリームは画像やビデオなどの非テキスト ファイルの処理には使用できません。

2: 処理ストリーム BufferedReader、BufferedWriter、BufferedInputStream

BufferedOutputsStream には、ノード ストリームの上位層が含まれている必要があります。つまり、処理ストリームはノード ストリームに基づいており、バッファ付きストリームはファイルの入出力を最も高速に処理します。したがって、通常はバッファリングされたストリームがより頻繁に使用されます。

以下は、ファイルコピーの 2 つの簡単な例です:

12
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

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.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();

    }

  }

}

3 文字ストリームはバイトストリームに変換され、OutputStreamWriter を通じて保存されます。

1

23
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

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();

    }

  }

関連記事:

Java IO ストリーム 出力ストリーム OutputString() の使用

Java の IO ストリームの包括的な紹介

関連ビデオ:

最新の Java 完全なビデオ チュートリアル - 無料のオンライン ビデオ チュートリアル

以上がJava の IO ストリームについて: ストリームの継承関係、処理ストリーム、および変換ストリームの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート