13 檔案操作 2 讀操作

2021-10-10 15:31:07 字數 2867 閱讀 7930

三 檔案讀取偏移量

檔案讀寫的介面位於io包,file檔案類是這些介面的實現類。

read() 實現的是按位元組數讀取:

readbyte :=

make([

]byte

,128

)// 指定要讀取的長度

for fmt.

println

("read: "

,string

(readbyte[

:n])

)if n <

128}

bufio封裝了io.reader、io.writer介面物件,並建立了另乙個也實現了該介面的物件:bufio.reader、bufio.writer。通過該實現,bufio實現了檔案的緩衝區設計,可以大大提高檔案i/o的效率。

使用bufio讀取檔案時,先將資料讀入記憶體的緩衝區(緩衝區一般比要比程式中設定的檔案接收物件要大),這樣就可以有效降低直接i/o的次數。

bufio.read(byte)相當於讀取大小len(p)的內容:

示例:

// 建立讀物件

reader := bufio.

newreader

(f)// 讀一行資料

byt,

_:= reader.

readbytes

('\n'

)

fmt.

println

(string

(byt)

)

readstring() 函式也具有同樣的功能,且能直接讀取到字串資料,無需轉換,示例:讀取大檔案的全部資料

reader := bufio.

newreader

(f)for

fmt.

println

("str = "

, str)

if err == io.eof

}

在unix設計思想中,一切皆檔案,命令列輸入也可以作為檔案讀入:

reader := bufio.

newreader

(os.stdin)

s,_:= reader.

readstring

("-"

)// 假設命令列以 - 開始

緩衝的思想:通過bufio,資料被寫入使用者緩衝,再進入系統緩衝,最後由作業系統將系統緩衝區的資料寫入磁碟。

ioutil直接讀取檔案:

ret, err := ioutil.

readfile

("test.txt"

)if err !=

nil fmt.

println

(string

(ret)

)

f, err := os.

openfile

("test.txt"

, os.o_create | os.o_wronly, os.modeperm)

if err !=

nildefer f.

close()

n, err := f.

write([

]byte

("hello world"))

if err !=

nil fmt.

println

(n)// 每次都會從頭開始重新寫入

writer := bufio.

newwriter

(f)_

, err = writer.

writestring

("hello world!"

)if err !=

nil writer.

flush()

// 必須重新整理緩衝區:將緩衝區的內容寫入檔案中。如果不重新整理,則只會在內容超出緩衝區大小時寫入

s :=

"你好世界"

err := ioutil.

writefile

("test.txt",[

]byte

(s), os.modeperm)

檔案讀取時,是可以控制游標位置的:

f, err := os.

openfile

("test.txt"

, os.o_rdwr, os.modeperm)

if err !=

nildefer f.

close()

// 讀取前五個位元組,假設讀取的檔案內容為: hello world!

bs :=

byte

// 建立1個位元組的切片

_, err = f.

read

(bs)

if err !=

nil fmt.

println

("讀到的資料是:"

,string

(bs)

)// h

// 移動游標

_, err = f.

seek(4

, io.seekstart)

// 游標從開始位置(h之前),移動4位,到達o之前

if err !=

nil_

, err = f.

read

(bs)

if err !=

nil fmt.

println

("讀到的資料是:"

,string

(bs)

)// o

2 檔案操作

新增檔案到版本庫 先保證檔案在之前建立的倉庫目錄下 第一步,用命令 git add告訴git,把檔案新增到倉庫 執行完後沒什麼顯示就對了 第二步,用命令 git commit告訴git,把檔案提交到倉庫 m後面輸入的是本次提交的說明,可以輸入任意內容 注意 commit可以一次提交很多檔案,所以你可...

2 檔案 檔案操作

def fileno self,args,kwargs real signature unknown 返回檔案控制代碼在核心中的索引值,以後做io多路復用時可以用到 def flush self,args,kwargs real signature unknown 把檔案從記憶體buffer裡強制重...

day13 檔案操作

2.1 開啟檔案 open file,mode r encoding none 開啟檔案並且返回乙個檔案物件 file 需要開啟的檔案的路徑 位址 a.絕對路徑 檔案或者資料夾在計算機中的全路徑 例如 users yuting 授課 python2101 01語言基礎 day13 常用模組和檔案操作...