golang 之 遍歷資料夾 並讀取檔案 按行輸出

2021-10-03 20:12:44 字數 2320 閱讀 8245

package main

import (

"bufio"

"fmt"

"io"

"io/ioutil"

"log"

"os"

)//檔案目錄樹形結構節點

type dirtreenode struct

var icount int = 0

//遞迴遍歷檔案目錄

func getdirtree(pathname string) (dirtreenode, error)

var tree, childnode dirtreenode

tree.name = pathname

var name, fullname string

for _, filedir := range rd

} else

} return tree, nil

}//遞迴列印檔案目錄

func printdirtree(tree dirtreenode, prefix string) }}

func processline(line byte)

// read one file and use hookfn to process each line

func readline(filepth string, hookfn func(byte)) error

defer f.close()

bfrd := bufio.newreader(f)

for

return err

} }}func main()

fmt.printf("\n")

fmt.println("file count:", icount)

printdirtree(tree, "")

}

以上用的是ioutil.readdir的方法,然後用range遍歷目錄節點的list

func readdir(dirname string) (os.fileinfo, error)
讀取 dirname 指定的目錄, 並返回乙個根據檔名進行排序的目錄節點列表。

遍歷的過程可以用另乙個方法:

使用filepath.walk包中的功能path/filepath 它遍歷乙個檔案樹

filepath.walkfunc,為樹中的每個檔案或目錄呼叫乙個型別的函式,包括根。

檔案按詞彙順序走。

不遵循符號鏈結。

此示例中的**列出了以當前目錄為根的檔案樹中所有檔案和目錄的路徑和大小。

err := filepath.walk(".",

func(path string, info os.fileinfo, err error) error

fmt.println(path, info.size())

return nil

})if err != nil

另:

關於寫檔案

writefile方法:

func check(e error)  

}

var d1 = byte(wiretestring); 

err2 := ioutil.writefile(「./output2.txt」, d1, 0666) //寫入檔案(位元組陣列)

check(err2)

writefile將data寫入到filename指定的檔案中。如果檔案不存在,writefile將會建立該檔案,且檔案的許可權是perm;如果檔案存在,先清空檔案內容再寫入。

writestring方法:

var teststring = 「測試n」 

var filename = 「./output1.txt」; 

var f *os.file 

var err1 error; 

if checkfilei***ist(filename) else  

check(err1) 

n, err1 := io.writestring(f, teststring ) //寫入檔案(字串) 

check(err1) 

fmt.printf(「寫入 %d 個位元組n」, n);

另:

golang byte和string相互轉換:

str2 := "hello"

data2 := byte(str2)

fmt.println(data2)

str2 = string(data2[:])

golang 遍歷資料夾和檔案

示例 package main import fmt io ioutil os strings 獲取指定目錄下的所有檔案和目錄 func getfilesanddirs dirpth string files string,dirs string,err error pthsep string os...

java遍歷資料夾並統計該檔案資料夾數

檔案裡完成了新檔案的建立寫入,以及複製 完成指定目錄的複製,使用當前工作目錄出現問題,因為檔案被開啟無法複製 public class file005 writer.close reader.close writer2.close 檔案目錄複製的方法,統計資料夾的個數 private static ...

遍歷資料夾

function search path string filename string ball boolean false string varsearchrec tsearchrec begin if findfirst path faanyfile,searchrec 0 then begin...