三 檔案讀取偏移量
檔案讀寫的介面位於io包,file檔案類是這些介面的實現類。
read() 實現的是按位元組數讀取:
bufio封裝了io.reader、io.writer介面物件,並建立了另乙個也實現了該介面的物件:bufio.reader、bufio.writer。通過該實現,bufio實現了檔案的緩衝區設計,可以大大提高檔案i/o的效率。readbyte :=
make([
]byte
,128
)// 指定要讀取的長度
for fmt.
println
("read: "
,string
(readbyte[
:n])
)if n <
128}
使用bufio讀取檔案時,先將資料讀入記憶體的緩衝區(緩衝區一般比要比程式中設定的檔案接收物件要大),這樣就可以有效降低直接i/o的次數。
bufio.read(byte)
相當於讀取大小len(p)
的內容:
示例:
readstring() 函式也具有同樣的功能,且能直接讀取到字串資料,無需轉換,示例:讀取大檔案的全部資料// 建立讀物件
reader := bufio.
newreader
(f)// 讀一行資料
byt,
_:= reader.
readbytes
('\n'
)
fmt.
println
(string
(byt)
)
在unix設計思想中,一切皆檔案,命令列輸入也可以作為檔案讀入:reader := bufio.
newreader
(f)for
fmt.
println
("str = "
, str)
if err == io.eof
}
緩衝的思想:通過bufio,資料被寫入使用者緩衝,再進入系統緩衝,最後由作業系統將系統緩衝區的資料寫入磁碟。reader := bufio.
newreader
(os.stdin)
s,_:= reader.
readstring
("-"
)// 假設命令列以 - 開始
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 常用模組和檔案操作...