国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java文件I/O的三種方法

開發 后端
RandomAccessFile是不屬于InputStream和OutputStream類系的。實際上,除了實現DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也實現了這兩個接口),它和這兩個類系毫不相干,甚至都沒有用InputStream和OutputStream已經準備好的功能;它是一個完全獨立的類,所有方法(絕大多數都只屬于它自己)都是從零開始寫的。

[[173297]]

之前在面試中被問到過兩次Java中文件讀入輸出怎么寫,當時只記得一個大概,沒有辦法很清晰的說出一個條理,今天特地看出總結了一下這方面的內容,想要寫出來給大家分享。

首先文件讀入輸出流常用有三種:FileInputStream/FileOutputStream,FileReader/FileWriter,RandomAccessFile。下面具體列出一些簡單的例子參考:

基礎篇:

1.

  1. FileRead fr = new FileReader(filename);  
  2. String s;  
  3. while( (s=fr.readLine())!=null){  
  4. ...  
  5.  
  6. fr.close();  
  7. //FileWriter同理,輸出時可用write()函數  
  8. //Java I/O中所有的Reader、Writer都是面向字符流的輸出輸出 

2.

  1. FileInputStream fi =new FileInputStream(filename);  
  2. int in 
  3. while( (in=fi.read())!=-1){  
  4. ...  
  5.  
  6. fi.close();  
  7. //FileOutputStream同理  
  8. //Java I/O中所有的Reader、Writer都是面向字節流的輸出輸出 

3.

  1. RandomAccessFile ra =new RandomAccessFile(filename,"rw");//后面的參數指定的是  
  2. 打開文件流的方式,“rw”是指讀寫,“r”是只讀,Java不提供只寫  
  3. ra.seek(number);//將文件指針移動到number處,這里文件指針可以理解為文件開始讀的位置  
  4. ra.skipByte(number);//跳過number個字節  
  5. ra.read();  
  6. ra.close();  
  7. //RandomAccessFile既可以讀也可以寫,而且可以利用seek()函數指定位置 

下面是百度百科的一些介紹:

RandomAccessFile是不屬于InputStream和OutputStream類系的。實際上,除了實現DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也實現了這兩個接口),它和這兩個類系毫不相干,甚至都沒有用InputStream和OutputStream已經準備好的功能;它是一個完全獨立的類,所有方法(絕大多數都只屬于它自己)都是從零開始寫的。這可能是因為RandomAccessFile能在文件里面前后移動,所以它的行為與其它的I/O類有些根本性的不同??偠灾且粋€直接繼承Object的,獨立的類。

進階篇:

在nio中,Java重新實現了I/O流,并且引入了一些新的方法來提高速度。我主要介紹通道、內存映射文件

1.通道:

通道和緩沖器是一個成對的概念,Thinking in Java中的一個例子特別好理解:我們把想要讀入的文件看作一個煤礦,數據就是我們想要的煤炭。通道好比是傳送煤礦的傳送帶,我們沒有辦法直接從傳送帶上拿走煤炭,只好利用卡車來裝載這些煤炭,卡車就是緩沖器,它主要負責從通道中取出數據,傳給我們寫的程序。***能與通道交互的緩沖器是ByteBuffer??梢钥闯龊屯ǖ乐С值慕馕隽鞯姆绞绞亲止澚?。所以它配套使用的是FileInputStream/FileOutputStream,RandomAccessFile

例子:

a.

  1. FileChannel fc =new FileOutputStream(filename).getChannel();  
  2. fc.write(ByteBuffer.wrap("something test".getBytes() ));//這里使用ByteBuffer比較簡單,其實ByteBuffer可以利用個put()函數寫入byte數組  
  3. fc.close(); 

b.

  1. fc= new FileOutputStream(filename).getChannel();  
  2. ByteBuffer buff = ByteBuffer.allocate(size);//沒錯,ByteBuffer是不提供顯示構造函數的,想要新建一個對象必須利用allocate()函數來分配空間。  
  3. fc.read(buff);  
  4. fc.close(); 

為什么想到要用通道來做I/O呢?主要考慮的是性能問題,通道加緩沖器能夠讓程序一些讀寫一定量的字符,而只使用InputStream/OutputStream,Reader/Writer只能一次讀寫一個字節/字符。而程序在進行I/O時要交給操作系統去解決這部分功能(調用系統調用),減少交給操作系統的次數可以有效的消減I/O花費的時間

2.內存映射文件:

內存映射文件主要的意思其實假定將文件都放入內存中,把它當作非常大的數組來訪問,效率特別好。為什么比較好呢?這要從Java虛擬機和操作系統開始說起le(其實我也不太懂,剛才看了一篇文章講的比較清晰,鏈接是http://www.360doc.com/content...)這篇文章主要介紹了Java I/O的原理以及內存映射文件的原理。我嘗試概括一下:Java I/O主要的實現手段肯定是利用系統調用,而系統調用先將想要使用的文件從硬盤調入到內核的I/O緩沖區中,這次會導入比Java程序想要的文件更多的內容(拷入更多的內容是因為程序的局部性原理,能夠得到更好的效率),然后再從內核的I/O緩沖區導入到Java進程自己的私有內存空間中。而內存映射文件放棄了兩次拷貝的方法,直接將Java進程的虛擬空間與文件對象構成一個映射,當私有內存空間中找不打想要的內容時發生缺頁異常,然后利用更底層的系統調用解決這個問題(其實在I/O的系統調用中也涉及到了缺頁異常處理),好處就是減少了一次從內核I/O緩沖區到進程私有地址的開銷。

例子:

  1. FileChannel fc = new RandomAccessFile(filename,"rw").getChannel();  
  2. MappedByteBuffer mb = fc.map(FileChannel.MapMode.READ_WRITE,start,length);  
  3. mb.put((byte)'x');  
  4. mb.get();  
  5. fc.close(); 

寫到這里突然想到在《孔乙己》中“茴”的4中寫法,現在Java打開文件也有了至少五種方法了,每一種都一各有利弊。以后也可以穿著長袍問別人你知道Java讀寫文件的5種方法么

責任編輯:武曉燕 來源: segmentfault
相關推薦

2009-07-08 12:56:32

編寫Servlet

2022-05-31 16:00:46

Go 編程語言復制文件Go 標準庫

2022-05-30 07:07:35

Java監聽文件Java 8

2021-12-20 07:11:26

Java List排序 Java 基礎

2011-06-10 10:43:12

Ubuntu應用安裝

2009-06-23 10:45:18

Hibernate支持

2010-09-14 15:10:49

CSS注釋

2024-11-15 07:00:00

Python發送郵件

2022-07-13 16:06:16

Python參數代碼

2011-04-18 15:32:45

游戲測試測試方法軟件測試

2009-12-11 18:49:39

預算編制博科資訊

2023-08-14 17:58:13

RequestHTTP請求

2022-07-07 00:33:34

Java線程同步

2010-09-08 13:29:48

CSS

2020-06-17 10:52:00

DDoS攻擊網絡攻擊網絡安全

2010-11-16 16:11:28

Oracle身份驗證

2023-02-21 14:58:12

間序列周期數據集

2013-01-04 15:47:54

Android開發平鋪UI設計

2021-07-13 12:31:27

IT組織改進首席技術官

2009-07-23 15:17:54

JDBC連接Acces
點贊
收藏

51CTO技術棧公眾號

国产精品日韩| av综合电影网站| 国产精品三级| 亚洲精品久久久久久久久| 蜜臀av免费观看| 麻豆国产一区二区| 亚洲精品免费一区二区三区| 国产精品99精品一区二区三区∴| 欧美这里有精品| 成年在线播放小视频| 久久国内精品视频| 动漫3d精品一区二区三区| 国产精品视屏| 午夜免费精品视频| 精品9999| 欧洲成人午夜免费大片| 午夜成人影视| 日韩美女一区二区三区| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 成人av影视| 国产成人无遮挡在线视频| 国产精品一区二区三区免费 | 黄色www在线观看| 亚洲一区二区三区无吗| 97国产超碰| 周于希免费高清在线观看| 亚洲精品在线不卡| 自拍偷拍欧美一区| 亚洲精品一区av在线播放| 国产精品99久久久久久久久久久久| 一区二区三区高清在线视频| 日韩激情免费| 日本中文字幕一区二区有码在线| 91蜜桃婷婷狠狠久久综合9色| 色综合久久av| 国产精品theporn| 国产精品入口免费视| 亚洲免费福利一区| 国产精品午夜av| 人人澡人一摸人人添| 一区二区三区在线播放| 高清中文字幕一区二区三区| 国产精品大尺度| 日韩人妻无码精品久久久不卡| 青草视频在线免费直播| 99精品偷自拍| 粉嫩高清一区二区三区精品视频| 日韩伦理在线一区| 亚洲精品色图| 91在线高清免费观看| 欧美色图国产精品| 国产有码一区二区| 波多野结衣的一区二区三区| 国产精品高清在线观看| 日韩电影一区| 亚洲自拍高清视频网站| 亚洲先锋成人| 亚洲欧美国产一区二区| 国产成人免费在线视频| 欧美日韩在线一| 国产精品私房写真福利视频| www.成人精品免费网站青椒| 欧美日韩国产丝袜美女| 午夜国产福利在线| 亚洲精品国精品久久99热一| 综合在线影院| 欧美激情视频免费观看| 成人免费在线观看av| 欧美高清视频在线观看| 久久在线视频| 日韩欧美在线观看强乱免费| 成人97人人超碰人人99| 婷婷免费在线观看| 色哟哟精品一区| h片视频在线观看| 北条麻妃一区二区三区中文字幕| 琪琪亚洲精品午夜在线| 亚洲图片欧美色图| 成全电影播放在线观看国语| 亚洲精品日韩精品| 国产精品99久| 熟妇人妻无乱码中文字幕真矢织江| 中文字幕第一区综合| 三级黄色网址| 91麻豆精品国产91| 91色.com| 国产韩日影视精品| 日韩中文一区二区| 国产亚洲视频在线| 成人影视在线播放| 亚洲国产成人在线播放| 国产另类在线| 国产丝袜不卡| 99久久婷婷国产综合精品| 中文在线网在线中文| 日韩精品一区二区三区第95| 久久精品夜夜夜夜久久| 亚洲精品久久久久久久久久久久久 | 亚洲欧美日韩一区二区三区在线观看| 日韩高清在线观看一区二区| 黄色的视频在线免费观看| 爱情岛论坛亚洲入口| 麻豆一区二区三| 日韩有码免费视频| 国产精品护士白丝一区av| 欧美成人性生活视频| 国产一区二区美女视频| 欧美gay视频| 欧美人牲a欧美精品| 97青娱国产盛宴精品视频| 性色av一区二区三区红粉影视| 污的网站在线观看| 欧美尺度大的性做爰视频| 奇米一区二区| 久久成人国产精品| 成人a在线视频免费观看| 欧美精品久久久久久久多人混战| 日韩成人精品一区二区三区| 国产日韩欧美久久| 久久最新资源网| 国产不卡一区视频| 波多野结衣在线观看一区二区| 色婷婷精品国产一区二区三区| 国产精品美女久久久久aⅴ | 亚洲欧洲色图综合| 91黄页在线观看| 91精品中国老女人| 国产欧美精品一区| 欧美黄色三级| 四虎影视永久免费在线观看一区二区三区| 亚洲精品国产a久久久久久| 性欧美freehd18| 日本精品一区二区| 欧洲一区二区三区在线| 日本欧美国产| 五月婷婷开心综合| 五月国产精品| 丰满的少妇愉情hd高清果冻传媒| 欧美主播一区二区三区美女| 亚洲欧洲免费| 天天爱天天操天天干| 日韩中文字幕网| 国产激情视频一区二区在线观看| 4438x成人网全国最大| 91最新在线免费观看| 一区二区欧美视频| 五月天亚洲色图| 激情亚洲色图| 2020久久国产精品| 中文字幕日本乱码精品影院| 亚洲欧洲国产精品一区| jizzjizz国产精品喷水| 日韩精品欧美国产精品忘忧草| 久久国产直播| 亚洲夜夜综合| 亚洲欧美日本国产有色| 精品国产乱码久久久久久蜜臀| 亚洲精品欧洲| 久久黄色美女电影| 色播五月综合| 亚洲欧美日韩网| 成人深夜在线观看| 99精品国产九九国产精品| 国产成人a亚洲精v品无码| 久久99热精品这里久久精品| 日本一区二区三区在线观看| 欧美大胆视频| 黄页视频在线免费观看| 亚洲一区二区三区乱码aⅴ| 色婷婷激情综合| 亚洲午夜av| 超碰免费在线播放| 26uuu成人| 久久精品国产2020观看福利| 久久久精品中文字幕麻豆发布| 国产精品香蕉| 久草在线青青草| 偷拍视频一区二区| 亚洲天堂精品在线| 欧美国产精品v| 日韩久久精品网| 免费网站成人| 国风产精品一区二区| 久久6精品影院| 亚洲超丰满肉感bbw| 羞羞视频在线观看欧美| 91精品影视| a天堂中文在线官网| 久久久久久高清| 欧美精品一区二区三区久久久 | 午夜视频一区| av在线免费网址| av免费看网址| 91国自产精品中文字幕亚洲| 色综合天天综合狠狠| 美女视频黄频大全不卡视频在线播放| 国产原创一区| 四虎精品在永久在线观看| 一区二区精品国产| 羞羞色国产精品|