Windows php 云计算 shell nginx mysql Android linux apache java 微软 wordpress google Python 编程 开源 程序员 Ubuntu centos Firefox

文件流是怎么定位的

   在讀寫文件的時候每個文件流都會維護一個文件流指針,標識當前文件流的讀寫定位位置,在打開文件的時候文件流指針位於文件的最開頭。當讀寫文件流的時候,讀寫文件流的函數會不斷改變文件流當前的位置。當用戶寫入一些數據後,如果需要讀取之前寫入的數據。或者需要修改指定文件位置的數據,就需要用到文件流定位功能。為此,ANSI文件I/O庫提供了文件流定位函數,定義如下:

   fseek函數定位參數stream代表的文件流定位到指定位置。參數offset是位置的偏移。以字節為單位,參數whence指定如何解釋offset。whence有三個取值,seek-set表示從文件起適計算offset。從參數whence的取值可以看出參數offset取值可以為證書或者負數。

  ftell函數返回參數stream指定的文件流當前讀寫指針的位置,如果函數出錯返回-1.rewind函數把參數stream指定的文件讀寫指針設置到最開始位置。

  和C的文件操作方式不同的是,C++ I/O系統管理兩個與一個文件相聯系的指針。一個是讀指針,它說明輸入操作在文件中的位置;另一個是寫指針,它下次寫操作的位置。每次執行輸入或輸出時,相應的指針自動變化。所以,C++的文件定位分為讀位置和寫位置的定位,對應的成員函數是seekg()和seekp()。seekg()是設置讀位置,seekp是設置寫位置。它們最通用的形式如下。

  當文件讀寫操作完成之後,我們必須將文件關閉以使文件重新變為可訪問的。關閉文件需要調用成員函數close(),它負責將緩存中的數據排放出來並關閉文件。它的格式很簡單:void close ();

  這個函數一旦被調用,原先的流對象(stream object)就可以被用來打開其它的文件了,這個文件也就可以重新被其它的進程(process)所有訪問了。

延伸阅读

  • 抱歉,暂无相关内容!

评论