JAVA集合框架:[44]流的需求分析案例

需求1:複製一個文本文件

①明確源和目的;源:inputstream reader。目的:outputstream writer

②是否是純文本?是!源:reader。目的:writer

③明確具體設備:源:硬碟:file。目的:硬碟,file

filereader fr=new filereader("a.txt");

filewriter fw=new filewriter("b.txt");

④需要額外功能嗎?需要:需要高效。。。

bufferedreader bufr=new bufferedreader(new filereader("a.txxt"));

bufferedwriter bufw=new bufferedwriter(new filewriter("b.txt"));

======================

需求2:讀取鍵盤錄入信息,並寫入到一個文件中

①明確源和目的;源:inputstream reader。目的:outputstream writer

②是否是純文本?是!源:reader。目的:writer

③明確具體設備:源:鍵盤:system.in。目的:硬碟,file

inputstream in=system.in;

filewriter fw=new filewriter("b.txt");

④需要額外功能?

需要:轉換。將字節流轉成字符流,因為明確的源是reader,這樣操作文本數據更便捷,所以要將已有的字節流轉成字符流

使用字節--》字符。inputstreamreader

inputstreamreader isr=new inputstreamreader(system.in);

filewriter fw=newfilewriter("b.txt");

還需要高效

bufferreader bufr=new bufferedreader(new inputstreamreader(system.in));

bufferedwriter bufw=new bufferedwriter(new filewriter("b.txt"));

需求三:將一個文本文件數據顯示在控制台上

1.明確源和目的。源:inputstream reader;目的:outputstream writer

2.是否是純文本?是:源,reader;目的writer

3,明確具體設備。源:硬碟:file;目的:控制台:system.in

filereader fr=new filereader("a.txt");

outputstream out =system.out;

4.需要額外功能嗎?

需要:轉換。

filereader fr=new filereader("a.txt");

outputstreamwriter osw=new outputstreamwriter(system.out);

還需要高效

bufferedreader bufr=new bufferedreader(new filereader("a.txt"));

bufferedwriter bufw=new bufferedwriter(new outputstreamwriter(system.out));

需求四:讀取鍵盤錄入數據,顯示在控制台上

1.明確源和目的。源:inputstream reader;目的:outputstream writer

2.是否是純文本?否!源:inputstream ;目的:outputstream

3.明確設備。源:鍵盤 system.in ;目的:控制台:system.out

inputstream isr=system.in;

outputstream osr=system.out;

4.是否需要額外功能?

需要轉換:因為都是字節流,但是操作的卻是文本數據,所以使用字符流操作更為便捷

inputstreamreader isr=new inputstreamreader(system.in);

outputstreamwriter osr=new inputstreamwriter(system.out);

需要高效

bufferedreader bufr=new bufferedreader(new inputstreamreader(system.in));

bufferedwriter bufw=new bufferedwriter(new outputstreamreader(system.out));

=================================

需求⑤:將一個中文字符串數據安裝指導的編碼表寫入到一個文本文件中

1.目的:outputstream writer

2.是純文本:writer

3.設備:硬碟file

filewriter fw=new filewriter("a.txt");

fw.wrrter("你好");

注意:既然需求中已經明確了指定編碼表的動作,那就不可以使用filewriter,因為

filewriter內部是使用默認的本地碼錶。只能使用其父類outputstreamwriter

outputstreamwriter 接收一個字節輸出流對象,既然是操作文件,那麼該對象是fileoutputstream

outputstreamwriter osw=new outputstreamwriter(new fileoutputstream("a.txt"),charsetname);

需要高效嗎?

bufferedwriter bufw=new bufferedwriter(new outputstreamwriter(new outputstream("a.txt"),"utf-8"));

什麼時候使用轉換流擬?

1.源或者目的的對應設備是字節流,但是操作的卻是文本數據,可以使用轉換流作為橋樑,提高對文本操作的便捷。

2.一旦操作文本涉及到具體的編碼表時,必須使用轉換流

相關文章

  1. JAVA集合框架:[21]map案例一

    map案例代碼: ①: import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import ...
  2. JAVA集合框架:[28]泛型案例2

    public class Jk { /** * @param args */ public static void main(String[] args) { // TODO Auto-generat ...
  3. JAVA集合框架:[22]map案例二

    import java.util.HashMap; import java.util.Iterator; public class mapdemo2 { public static void main ...
  4. JAVA集合框架:[41]IO流之字節字符

    字符流=字節流+編碼表 字節流的兩個頂層父類: 1.inputstream   2.outputstream 字符流的另一個頂層父類: 1.reader     2.writer 如果要操作文字數據, ...
  5. JAVA集合框架:[29]泛型案例3

    public class Person implements Comparable<Person>{ private String name; private int age; publi ...
  6. JAVA集合框架:[23]map案例四

    class  Person implements Comparable{ private int age; private String name; public int getAge() { ret ...
  7. JAVA集合框架:[43]流的操作

    ========= 字節流: 基本操作與字符流類相同 但它不僅可以操作字符,還可以操作其他媒體文件 =============== 轉換流: inputstreamreader:字節到字符的橋樑.解碼 ...
  8. JAVA集合框架:[45]io流的copy

    public class Copydemo { /** * @param args * @throws IOException */ public static void main(String[] ...
  9. JAVA集合框架:[30]泛型案例4

    import java.util.ArrayList; import java.util.Iterator; public class Fxtonpeifu { /** * @param args * ...
  10. JAVA集合框架:[27]泛型案例一

    案例代碼: ①import java.util.Iterator; import java.util.TreeSet; public class Genericdemo { /** * @param ...
  11. JAVA集合框架:[61]UDP的服務端編寫

    package net1; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSo ...
  12. JAVA集合框架:[40]arraylist知識

    import java.util.ArrayList; import java.util.Iterator; /** * 熟悉兩個快捷鍵:shift+ctrl+s,快捷創建構造函數等 * shift+ ...
  13. JAVA集合框架:[6]字符串計數練習題

    public class Count { /** * @param args * * 一個字串在整串中出現的次數 * "nbaernbatynbauinbaopnba" * 思路: ...
  14. JAVA集合框架:[24]map練習題

    import java.util.Map; import java.util.TreeMap; import java.util.Iterator; public class Treemap { pu ...
  15. JAVA集合框架:[36]linklist練習

    ④LinkList import java.util.LinkedList; /** * addFirst(); * addLast(); * * * * getFirst();//獲取但不移除,如果 ...
  16. JAVA集合框架:[16]set集合知識點

    set:元素不可重複,是無序的. set接口和collection方法一致 |--HashSet:內部結構是哈希表,是不同步的. 如何保證該集合的元素唯一性呢? 通過對象的hashcode和equal ...
  17. JAVA集合框架:[13]List集合

    List集合是可以完成對元素的增刪改查 List: |--Vector:內部是數組數據結構,是同步的.增刪,查詢都很慢 |--ArrayList:內部是數組數據結構,是不同步的,替代了Vector.查 ...
  18. JAVA集合框架:[63]正規表達式練習

    package Test; public class Test1 { public static void main(String[] args) { // TODO Auto-generated m ...
  19. JAVA集合框架:[60]UDP傳輸的客戶端簡易編寫

    package net1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...
  20. JAVA集合框架:[18]list常用方法

    import java.awt.List; import java.util.ArrayList; import java.util.Arrays; public class list {//list ...