<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 文件基本操作 | 權限 | 權限數值 | 作業 | | --- | --- | --- | | r | 4 | read,讀取。讀取文件內容,瀏覽目錄 | | w | 2 | write,寫入。新增或者修改內容,刪除移動目錄或者目錄里面文件 | | x | 1 | execute,執行。執行文件,進入目錄 | ### 文件的創創建與打開 > func OpenFile(name string, flag int, perm FileMode) ,返回(file *File, err error) > name string 路徑 > flag int 指定的文件訪問模式 > perm FileMode 位掩碼參數,文件模式和權限,如0776 > OpenFile是一個更底層的文件打開函數,大多數調用者都應用Open或Create代替本函數。它會使用指定的選項(如O_RDONLY等)、指定的模式(如0666等)打開指定名稱的文件。如果操作成功,返回的文件對象可用于/O。如果出錯,錯誤底層類型是*PathError。 ``` // flag指定的文件訪問模式 os中的常量 并非所有操作系統兼容 const ( O_RDONLY int = syscall.O_RDONLY // 只讀模式打開文件 O_WRONLY int = syscall.O_WRONLY //只寫模式打開文件 O_RDWR int = syscall.O_RDWR //讀寫模式打開文件 O_APPEND int = syscall.O_APPEND //寫操數據加文件尾部 O_CREATE int = syscall.O_CREAT //如果不存在將創建一個新文件 O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必須不存在 O_SYNC int = syscall.O_SYNC //打開文件用于同步I/0 O_TRUNC int = syscall.O_TRUNC // 如果可能,打開時清空文件 ) ``` 其中,O_RDONLY、O_WRONLY、O_RDWR應該只指定一個,剩下的通過“|”操作符來指定。該函數內部會給flags加上syscall.O_CLOEXEC,在fork子進程時會關閉通過OpenFile打開的文件,即子進程不會重用該文件描述符。 ``` // perm 位掩碼參數指定的常量 類型是 os.FileMode const( // 單字被 string 方法用于格式化的屬性縮寫 ModeDir FileMode = 1 << (32-1-iota) //d : 目錄 ModeAppend // a:只能寫人,且只能寫入到末尾 ModeExclusive //1:用于執行 ModeTemporary // T:1 臨時文件(非備份文件) ModeSymlink //L:符號鏈接(不是快捷方式文件) ModeDevice //D:設備 ModeNamedPipe //p:命名管道(FIFO) ModeSocket //S:Unix域socket ModeSetuid // u:表示文件具有其創建者戶id權限 ModeSetgid //g:表示文件具有其創建者組id的權限 ModeCharDevice //c:字設備,需已設置ModeDevice ModeSticky //t:只有root/創建者能刪除/移動文件 //覆蓋所有類型位(用于通過&獲取類型位),對普通文件,所有這些位都不應被設置 ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice ModePerm FileMode= 0777 // 覆蓋所有Unix權限位(用于通過&獲取類型位) ) ``` ``` package main import ( "fmt" "os" ) //打開文件 如果沒有文件 就創建 func mode(path string, fiag int) { file, err := os.OpenFile(path, fiag, 0766) if err != nil { // 錯誤輸出 正常錯誤輸出應該是空的 fmt.Println(err) } // 成功了 打印出指針地址 fmt.Println(file) // &{0xc00010e780} // 創建成功關閉文件 file.Close() } //打開文件 如果沒有文件 就創建 func main() { // os.O_RDWR|os.O_CREATE 表示讀寫方式打開文件 如果不存在就創立 mode("E:\\flie\\999.txt", os.O_RDWR|os.O_CREATE) } ``` 大多數情況下我們用下面兩個函數來創建或者打開文件 > func Open(name string) , 返回(file *File, err error) > name string 路徑 > Open打開一個文件用于讀取。如果操作成功,返回的文件對象的方法可用于讀取數據;對應的文件描述符具有O_RDONLY模式。如果出錯,錯誤底層類型是*PathError。 > func Create(name string) , 返回(file *File, err error) > name string 路徑 Create采用模式0666(任何人都可讀寫,不可執行)創建一個名為name的文件,如果文件已存在就會截斷它(為空文件)。如果成功,返回的文件對象可用于I/O;對應的文件描述符具有O_RDWR模式。如果出錯,錯誤底層類型是*PathError。 Open和Create的函數定義如下: ``` func Open(name string) (*File, error){ return OpenFile(name,O_RDONLY, 0) } func Create(name string) (*File, error){ return OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666) } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看