在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ GO/ 7.5 文件操作
7 文本處理
3 Web基礎(chǔ)
14 擴展Web框架
10.4 小結(jié)
2.2 Go基礎(chǔ)
2.8 總結(jié)
6.1 session和cookie
5.5 使用beedb庫進行ORM開發(fā)
8.3 REST
13.6 小結(jié)
5.4 使用PostgreSQL數(shù)據(jù)庫
14.6 pprof支持
14.1 靜態(tài)文件支持
11.2 使用GDB調(diào)試
7.7 小結(jié)
1 GO環(huán)境配置
14.5 多語言支持
7.1 XML處理
1.5 總結(jié)
13 如何設(shè)計一個Web框架
14.3 表單及驗證支持
12 部署與維護
10 國際化和本地化
1.1 Go 安裝
6.2 Go如何使用session
5.6 NOSQL數(shù)據(jù)庫操作
6.5 小結(jié)
9.4 避免SQL注入
12.1 應(yīng)用日志
4.2 驗證表單的輸入
10.1 設(shè)置默認地區(qū)
1.3 Go 命令
9.6 加密和解密數(shù)據(jù)
4.1 處理表單的輸入
4.4 防止多次遞交表單
11.3 Go怎么寫測試用例
8 Web服務(wù)
12.3 應(yīng)用部署
5.7 小結(jié)
12.5 小結(jié)
11 錯誤處理,調(diào)試和測試
9.2 確保輸入過濾
14.2 Session支持
6.4 預(yù)防session劫持
12.4 備份和恢復(fù)
8.1 Socket編程
13.1 項目規(guī)劃
13.4 日志和配置設(shè)計
7.6 字符串處理
13.2 自定義路由器設(shè)計
6.3 session存儲
3.4 Go的http包詳解
8.2 WebSocket
10.3 國際化站點
7.5 文件操作
7.4 模板處理
9.1 預(yù)防CSRF攻擊
13.3 controller設(shè)計
2.6 interface
14.4 用戶認證
2.3 流程和函數(shù)
附錄A 參考資料
11.1 錯誤處理
9.5 存儲密碼
9.3 避免XSS攻擊
12.2 網(wǎng)站錯誤處理
6 session和數(shù)據(jù)存儲
2.4 struct類型
3.3 Go如何使得Web工作
2.5 面向?qū)ο?/span>
3.1 Web工作方式
1.2 GOPATH與工作空間
2.1 你好,Go
9.7 小結(jié)
13.5 實現(xiàn)博客的增刪改
7.2 JSON處理
10.2 本地化資源
7.3 正則處理
2 Go語言基礎(chǔ)
5.1 database/sql接口
4.5 處理文件上傳
8.5 小結(jié)
4.3 預(yù)防跨站腳本
5.3 使用SQLite數(shù)據(jù)庫
14.7 小結(jié)
3.2 Go搭建一個Web服務(wù)器
2.7 并發(fā)
5 訪問數(shù)據(jù)庫
4 表單
3.5 小結(jié)
1.4 Go開發(fā)工具
11.4 小結(jié)
9 安全與加密
5.2 使用MySQL數(shù)據(jù)庫
4.6 小結(jié)
8.4 RPC

7.5 文件操作

在任何計算機設(shè)備中,文件是都是必須的對象,而在Web編程中,文件的操作一直是Web程序員經(jīng)常遇到的問題,文件操作在Web應(yīng)用中是必須的,非常有用的,我們經(jīng)常遇到生成文件目錄,文件(夾)編輯等操作,現(xiàn)在我把Go中的這些操作做一詳細總結(jié)并實例示范如何使用。

目錄操作

文件操作的大多數(shù)函數(shù)都是在os包里面,下面列舉了幾個目錄操作的:

  • func Mkdir(name string, perm FileMode) error

    創(chuàng)建名稱為name的目錄,權(quán)限設(shè)置是perm,例如0777

  • func MkdirAll(path string, perm FileMode) error

    根據(jù)path創(chuàng)建多級子目錄,例如astaxie/test1/test2。

  • func Remove(name string) error

    刪除名稱為name的目錄,當(dāng)目錄下有文件或者其他目錄是會出錯

  • func RemoveAll(path string) error

    根據(jù)path刪除多級子目錄,如果path是單個名稱,那么該目錄下的子目錄全部刪除。

下面是演示代碼:

package main

import (
    "fmt"
    "os"
)

func main() {
    os.Mkdir("astaxie", 0777)
    os.MkdirAll("astaxie/test1/test2", 0777)
    err := os.Remove("astaxie")
    if err != nil {
        fmt.Println(err)
    }
    os.RemoveAll("astaxie")
}

文件操作

建立與打開文件

新建文件可以通過如下兩個方法

  • func Create(name string) (file *File, err Error)

    根據(jù)提供的文件名創(chuàng)建新的文件,返回一個文件對象,默認權(quán)限是0666的文件,返回的文件對象是可讀寫的。

  • func NewFile(fd uintptr, name string) *File

    根據(jù)文件描述符創(chuàng)建相應(yīng)的文件,返回一個文件對象

通過如下兩個方法來打開文件:

  • func Open(name string) (file *File, err Error)

    該方法打開一個名稱為name的文件,但是是只讀方式,內(nèi)部實現(xiàn)其實調(diào)用了OpenFile。

  • func OpenFile(name string, flag int, perm uint32) (file *File, err Error)

    打開名稱為name的文件,flag是打開的方式,只讀、讀寫等,perm是權(quán)限

寫文件

寫文件函數(shù):

  • func (file *File) Write(b []byte) (n int, err Error)

    寫入byte類型的信息到文件

  • func (file *File) WriteAt(b []byte, off int64) (n int, err Error)

    在指定位置開始寫入byte類型的信息

  • func (file *File) WriteString(s string) (ret int, err Error)

    寫入string信息到文件

寫文件的示例代碼

package main

import (
    "fmt"
    "os"
)

func main() {
    userFile := "astaxie.txt"
    fout, err := os.Create(userFile)        
    if err != nil {
        fmt.Println(userFile, err)
        return
    }
    defer fout.Close()
    for i := 0; i < 10; i++ {
        fout.WriteString("Just a test!\r\n")
        fout.Write([]byte("Just a test!\r\n"))
    }
}

讀文件

讀文件函數(shù):

  • func (file *File) Read(b []byte) (n int, err Error)

    讀取數(shù)據(jù)到b中

  • func (file *File) ReadAt(b []byte, off int64) (n int, err Error)

    從off開始讀取數(shù)據(jù)到b中

讀文件的示例代碼:

package main

import (
    "fmt"
    "os"
)

func main() {
    userFile := "asatxie.txt"
    fl, err := os.Open(userFile)        
    if err != nil {
        fmt.Println(userFile, err)
        return
    }
    defer fl.Close()
    buf := make([]byte, 1024)
    for {
        n, _ := fl.Read(buf)
        if 0 == n {
            break
        }
        os.Stdout.Write(buf[:n])
    }
}

刪除文件

Go語言里面刪除文件和刪除文件夾是同一個函數(shù)

  • func Remove(name string) Error

    調(diào)用該函數(shù)就可以刪除文件名為name的文件

上一篇:2.1 你好,Go下一篇:10.4 小結(jié)