亚洲精品成人18久久久久_日韩欧美色_江苏极品身材白嫩少妇自拍_曰本人做爰大片免费观看一老师_久草视频网_最近中文字幕MV高清在线视频

首頁 > 范文大全 > 工作總結(jié) > 學(xué)習(xí)總結(jié) > java io流學(xué)習(xí)總結(jié)

java io流學(xué)習(xí)總結(jié)

發(fā)布時間:2021-01-03

java io流學(xué)習(xí)總結(jié)

  一、什么是流?

  流就是字節(jié)序列的抽象概念,能被連續(xù)讀取數(shù)據(jù)的數(shù)據(jù)源和能被連續(xù)寫入數(shù)據(jù)的接收端就是流,流機制是Java及C++中的一個重要機制,通過流我們可以自由地控制文件、內(nèi)存、IO設(shè)備等數(shù)據(jù)的流向。而IO流就是用于處理設(shè)備上的數(shù)據(jù),如:硬盤、內(nèi)存、鍵盤錄入等。IO流根據(jù)處理類型的不同可分為字節(jié)流和字符流,根據(jù)流向的不同可分為輸入流和輸出流。

  二、字節(jié)流和字符流的區(qū)別:

  字符流,因為文件編碼的不同,就有了對字符進行高效操作的字符流對象,它的原理就是基于字節(jié)流讀取字節(jié)時去查了指定的碼表。它和字節(jié)流的區(qū)別有兩點:1.在讀取數(shù)據(jù)的時候,字節(jié)流讀到一個字節(jié)就返回一個字節(jié),字符流使用了字節(jié)流讀到一個或多個字節(jié)(一個中文對應(yīng)的字節(jié)數(shù)是兩個,在UTF-8碼表中是3個字節(jié))時,先去查指定的編碼表,再將查到的字符返回;2.字節(jié)流可以處理所有類型的數(shù)據(jù),如jpg、avi、mp3、wav等等,而字符流只能處理字符數(shù)據(jù)。所以可以根據(jù)處理的文件不同考慮使用字節(jié)流還是字符流,如果是純文本數(shù)據(jù)可以優(yōu)先考慮字符流,否則使用字節(jié)流。

  三、IO體系,所具備的基本功能就是讀和寫:

  1.字符流

  |-- Reader(讀)

  |-- Writer(寫)

  Reader

  |--InputStreamReader

  |--FileReader:用于處理文件的字符讀取流對象

  Writer

  |--OutputStreamWriter

  |--FileWriter:用于處理文件的字符寫入流對象

  其實很容易就可以看出來,IO體系中的子類名后綴絕大部分是父類名稱,而前綴則是體現(xiàn)子類特有功能的名稱。

  Reader中常見的方法:

  |--int read

  讀取一個字符,并返回讀到的這個字符,讀到流的末尾則返回-1。

  |--int read(char)

  將讀到的字符存入指定的數(shù)組中,返回的是讀到的字符個數(shù),

  讀到流的末尾則返回-1。

  |--close

  讀取字符其實用的是window系統(tǒng)的功能,就希望使用完畢后,

  進行資源的釋放。

  FileReader除了自己的構(gòu)造函數(shù)外沒有特有的方法:

  |--用于讀取文本文件的流對象。

  |--用于關(guān)聯(lián)文本文件。

  |--構(gòu)造函數(shù)FileReader(String fileName)

  在讀取流對象初始化時,必須要指定一個被讀取的文件,

  如果該文件不存在則會發(fā)生FileNotFoundException異常。

  Writer中常見的方法:

  |--write

  將一個字符寫入到流中。

  |--write(char)

  將一個字符數(shù)組寫入到流中。

  |--writer(String)

  將一個字符寫入到流中。

  |--flush

  刷新流,將流中的數(shù)據(jù)刷新到目的地中,流還存在。

  |--close

  關(guān)閉資源,在關(guān)閉錢會先調(diào)用flush, 刷新流中的數(shù)據(jù)到目的地。

  FileWriter,除了自己的構(gòu)造函數(shù)外沒有特有的方法:

  |--該類的特點

  |--用于處理文本文件

  |--沒有默認的編碼表

  |--有臨時緩沖

  |--構(gòu)造函數(shù),在寫入流對象初始化時,必須要有一個存儲數(shù)據(jù)的目的地。

  |--FileWriter(String fileName),該構(gòu)造器是干什么用的呢?

  |--調(diào)用系統(tǒng)資源

  |--在指定位置創(chuàng)建一個文件,如果該文件已經(jīng)存在則被覆蓋。

  |--FileWriter(String filename,Boolean append),這構(gòu)造器的作用是?

  當(dāng)傳入的boolean類型的值為true時,會在指定文件末尾處進行數(shù)據(jù)的續(xù)寫。

  清單1,將文本數(shù)據(jù)保存到文件中代碼

  private static void test1{

  FileWriter fw=null;

  try {

  //初始化FileWriter對象,指定文件名已經(jīng)存儲路徑

  fw=new FileWriter("D:/test.txt");

  fw.write("將字符串寫入流");

  //將流中的數(shù)據(jù)刷新到目的地,流還在

  fw.flush;

  fw.write("將字符串寫入流");

  } catch (IOException e) {

  e.printStackTrace;

  }finally{

  if(fw!=null){

  try {

  fw.close;

  } catch (IOException e1) {

  e1.printStackTrace;

  }

  }

  }

  }

  清單2,讀取一個已有文本文件,并將文本內(nèi)容打印出來代碼

  private static void test2{

  FileReader fr=null;

  try {

  //初始化FileReader對象,指定文件路徑

  fr=new FileReader("D:/test.txt");

  int ch=0;

  while((ch=fr.read)!=-1){

  //每次讀取一個字符,直到讀到末尾-1為止

  System.out.println((char)ch);

  }

  } catch (IOException e) {

  e.printStackTrace;

  }finally{

  if(fr!=null){

  try {

  fr.close;

  } catch (IOException e1) {

  e1.printStackTrace;

  }

  }

  }

  }

  這樣每讀到一個字符就打印出來,效率很不高,能不能按指定大小讀取完后再打印出來呢?答案是當(dāng)然可以的。

  清單3,讀取一個已有文本文件,讀完1kb再將其讀到的內(nèi)容打印出來代碼

  private static void test3{

  FileReader fr=null;

  try {

  //初始化FileReader對象,指定文件路徑

  fr=new FileReader("D:/test.txt");

  char buf=new char[1024];

  int len=0;

  while((len=fr.read(buf))!=-1){

  //每次讀取1kb大小的字符,直到讀到末尾-1為止

  System.out.println(new String(buf,0,len));

  }

  } catch (IOException e) {

  e.printStackTrace;

  }finally{

  if(fr!=null){

  try {

  fr.close;

  } catch (IOException e1) {

  e1.printStackTrace;

  }

  }

  }

  }

  字符流的緩沖區(qū):

  |--緩沖區(qū)的出現(xiàn)提高了對流的操作效率。

  原理:其實就是將數(shù)組進行封裝。

  |--對應(yīng)的對象

  |--BufferedWriter

  特有方法newLine,跨平臺的換行符。

  |--BufferedReader

  特有方法readLine,一次讀一行,到行標記時,將行標記

  之前的字符數(shù)據(jù)作為字符串返回,讀到末尾返回null。

  |--說明

  在使用緩沖區(qū)對象時,要明確,緩沖的存在是為了增強流

  的功能而存在,所以在建立緩沖區(qū)對象時,要先有流對象

  存在。其實緩沖區(qū)內(nèi)部就是在使用流對象的方法,只不過

  加入了數(shù)組對數(shù)據(jù)進行了臨時存儲,為了提高操作數(shù)據(jù)的

  效率。

  |--代碼上的體現(xiàn)

  |--寫入緩沖區(qū)對象

  根據(jù)前面所說的建立緩沖區(qū)時要先有流對象,并將其作為參數(shù)傳遞給緩沖區(qū)的構(gòu)造函數(shù)

  BufferedWriter bufw=new BufferedWriter(new FileWriter(“test.txt”));

  bufw.write(“將數(shù)據(jù)寫入緩沖區(qū)”);

  bufw.flush;//將緩沖區(qū)的數(shù)據(jù)刷新到目的地

  bufw.close;//其實關(guān)閉的是被包裝在內(nèi)部的流對象

  |--讀取緩沖區(qū)對象

  BufferedReader bufr=new BufferedReader(new FileReader(“test.txt”));

  String line=null;

  while((line=bufr.readLine)!=null){

  //每次讀取一行,取出的數(shù)據(jù)不包含回車符

  system.out.println(line);

  }

  bufr.close;

  清單4,使用緩沖區(qū)對文本文件進行拷貝代碼

  private static void test4{

  BufferedReader bufr=null;

  BufferedWriter bufw=null;

  try {

  bufr=new BufferedReader(new FileReader("D:/a.txt"));

  bufw=new BufferedWriter(new FileWriter("D:/b.txt"));

  String line=null;

  while((line=bufr.readLine)!=null){

  bufw.write(line);//每次將一行寫入緩沖區(qū)

  bufw.flush;//刷新到目的地

  }

  } catch (IOException e) {

  e.printStackTrace;

  }finally{

  try {

  if(bufw!=null){

  bufw.close;

  }

  if(bufr!=null){

  bufr.close;

  }

  } catch (IOException e1) {

  e1.printStackTrace;

  }

  }

  }

  仔細看可以發(fā)現(xiàn),程序里面的FileReader對象和FileWriter對象直接new出來且沒有調(diào)用close,因為緩沖對象調(diào)用了這兩個方法,前面說了,緩沖對象調(diào)用的flush和close其實就是關(guān)閉被包裝在其內(nèi)部的流對象。關(guān)閉流的先后順序也要注意,如果流之間有依賴關(guān)系,則被依賴的流要后關(guān)閉。readLine方法原理:其實緩沖區(qū)中的該方法,用的還是與緩沖區(qū)關(guān)聯(lián)的流對象的read方法,只不過,每一次讀到一個字符先不進行具體操作,先進行臨時存儲,當(dāng)讀到回車標記時,將臨時容器中存儲的數(shù)據(jù)一次性返回。我們可以根據(jù)這個原理來自己編寫一個緩沖區(qū)對象。

  清單5,編寫一個自己的bufferedreader代碼

  public class MyBufferedReader {

  private Reader reader;

  public MyBufferedReader(Reader reader){

  this.reader=reader;

  }

  public String readLine throws IOException{

  StringBuilder sb=new StringBuilder;

  int ch=0;

  while((ch=reader.read)!=-1){

  if(ch=='\r'){//空格則繼續(xù)

  continue;

  }else if(ch=='\n'){//每次返回一行

  return sb.toString;

  }else{

  sb.append((char)ch);

  }

  }

  return sb.toString;

  }

  public void close throws IOException{

  //緩沖對象的關(guān)閉方法其實就是調(diào)用流本身的close

  reader.close;

  }

  }

  測試時把清單4的BufferedReader對象替換成MyBufferedReader對象即可。

  清單6,測試mybufferedreader代碼

  private static void test4{

  MyBufferedReader bufr=null;

  BufferedWriter bufw=null;

  try {

  bufr=new MyBufferedReader(new FileReader("D:/a.txt"));

  bufw=new BufferedWriter(new FileWriter("D:/b.txt"));

  String line=null;

  while((line=bufr.readLine)!=null){

  bufw.write(line);//每次將一行寫入緩沖區(qū)

  bufw.flush;//刷新到目的地

  }

  } catch (IOException e) {

  e.printStackTrace;

  }finally{

  try {

  if(bufw!=null){

  bufw.close;

  }

  if(bufr!=null){

  bufr.close;

  }

  } catch (IOException e1) {

  e1.printStackTrace;

  }

  }

  }

  其實我們自己寫的這個緩存對象就是對Reader對象進行了功能的增強,Reader對象每次只能返回一個字符,而增強了功能之后該類就可以每次返回一行字符,也就是設(shè)計模式中所說的裝飾模式。

java io流學(xué)習(xí)總結(jié) 相關(guān)內(nèi)容:
  • 交通安全法學(xué)習(xí)總結(jié)范文

    生命只有一次,每個人是無比珍貴的。所以大家在日常生活中,都要時刻謹記交通安全,做到文明出行,安全出行。以下就是小編為大家整理關(guān)于交通安全法的學(xué)習(xí)總結(jié),歡迎閱讀。...

  • 小學(xué)2020掛職學(xué)習(xí)總結(jié)

    篇一:20xx 年3月26-4月1日,我們甘肅省武威市涼州區(qū)的17名教師和三位校領(lǐng)導(dǎo)在區(qū)教育局教研室朱主任的帶領(lǐng)下,來到杭州市西湖教育集團進行為期七天的掛職學(xué)習(xí),學(xué)習(xí)時間雖短,卻收獲頗豐,下面我談?wù)勛约哼@幾天的感受。...

  • 中心組理論學(xué)習(xí)心得總結(jié)

    勤政出成績,廉政得民心。第一范文網(wǎng)小編為大家整理了中心組理論學(xué)習(xí)心得總結(jié),希望對大家有所幫助。中心組理論學(xué)習(xí)心得總結(jié)一:一、通過不斷學(xué)習(xí),使我增增強了綜合能力,認真學(xué)習(xí)鄧小平理論、三個代表重要思想和科學(xué)發(fā)展觀,使我的理論...

  • 2020學(xué)習(xí)師德師風(fēng)學(xué)習(xí)總結(jié)

    從古至今,在人們心目中,似乎很難找出比教師更受敬重的職業(yè)。只要用真誠的心去感化學(xué)生,用真誠的愛去引導(dǎo)學(xué)生,只有真的愛學(xué)生才能當(dāng)之無愧地說愛教育事業(yè)。...

  • 禁毒學(xué)習(xí)總結(jié)800字

    低頻不能沾,害人又害己。下面是小編整理的禁毒學(xué)習(xí)總結(jié)800字,請參考,上公文站,發(fā)現(xiàn)學(xué)習(xí)。禁毒學(xué)習(xí)總結(jié)800字一毒品,致命的惡魔,吸毒是人類趕上地獄的快車,是人類慢性自殺的行為。...

  • 師德師風(fēng)學(xué)習(xí)總結(jié)(精選)

    國家的興衰,系于教育;教育的興衰,系于教師。 教師是立校之本,而師德師風(fēng)則是教育之魂。以下是小編為您帶來的師德師風(fēng)學(xué)習(xí)總結(jié),感謝您的閱讀!師德師風(fēng)學(xué)習(xí)總結(jié)一:教師是人類靈魂的工程師,肩負著為祖國的建設(shè)與發(fā)展培養(yǎng)人才的歷史使命...

  • 大學(xué)生學(xué)習(xí)個人總結(jié)

    從中學(xué)到大學(xué),是人生的重大轉(zhuǎn)折。以下是第一范文網(wǎng)小編為大家精心搜集和整理的大學(xué)生學(xué)習(xí)個人總結(jié),希望大家喜歡!大學(xué)生學(xué)習(xí)個人總結(jié)(一)三年的大學(xué)生活臨近了尾聲。這短短的三年,卻是我的人生中彌足珍貴的三年。...

  • 大學(xué)半學(xué)期的學(xué)習(xí)總結(jié)

    通過上學(xué)期學(xué)習(xí),我受益匪淺。但我也深知那許多的不足,所以在新學(xué)期里我會繼續(xù)與同學(xué)們共同奮斗,使自己取得更大的進步。以下內(nèi)容是小編為您精心整理的大學(xué)半學(xué)期的學(xué)習(xí)總結(jié),歡迎參考!...

  • 學(xué)習(xí)總結(jié)
主站蜘蛛池模板: 特级毛片免费看 | 99久久免费精品国产男女高不卡 | 国产精品国产三级国产aⅴ中文 | 黄色毛片前黄 | 久久久久色 | 亚洲va欧美va日韩va成人网 | 一夜新娘第三季在线观看 | 911精品影院在线观看 | 91av国产在线视频 | 亚洲AV无码乱码在线观看野外 | 亚洲日韩偷拍丝袜综合 | 天天av天天爽 | 丝袜中出制服人妻美腿 | 色哟哟国产精品免费观看 | 午夜影院120 | FREEEⅩXX性欧美HD浪妇 | 色偷偷人人澡人人爽人人模 | 免费日韩一区二区三区 | 欧美精品久久一区二区 | 99久热这里只有精品视频免费观看 | 日本打屁股调教免费网站 | 欧美影院一区 | 国产高潮流白浆啊免费A片动态 | 三妻四妾免费 | 五月香丁激情欧美啪啪 | 在教室伦流澡到高潮hgl视频 | 国产农村乱 | 国产亚洲欧美日韩夜色凹凸成人 | 69福利视频| 日本不卡一区视频 | 一出一进一爽一粗一大视频免费的 | JAPANESE日本丰满少妇 | 岛国在线无码免费观 | 国产中文字幕视频 | 日韩精品视频在线观看网站 | 亚洲码国产精品高潮在线 | 精品久久免费观看 | 一本久久a久久精品合男女 韩国成人免费视频 | 国产亚洲欧美另类在线第1页 | 99在线精品免费视频九九视 | 伊人一区 |