欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文搞懂Golang文件操作增刪改查功能(基礎篇)

 更新時間:2021年04月16日 09:13:19   作者:Data-Mining  
這篇文章主要介紹了一文搞懂Golang文件操作增刪改查功能(基礎篇),Golang 可以認為是服務器開發(fā)語言發(fā)展的趨勢之一,特別是在流媒體服務器開發(fā)中,已經(jīng)占有一席之地,今天我們不聊特別深奧的機制和內(nèi)容,就來聊一聊 Golang 對于文件的基本操作

前言

目前,Golang 可以認為是服務器開發(fā)語言發(fā)展的趨勢之一,特別是在流媒體服務器開發(fā)中,已經(jīng)占有一席之地。很多音視頻技術服務提供商也大多使用 Golang 語言去做自己的后臺服務開發(fā),業(yè)內(nèi)貌似已經(jīng)達成了某種共識。今天我們不聊特別深奧的機制和內(nèi)容,就來聊一聊 Golang 對于文件的基本操作。

正文

開始之前,講一個非常有意思的小橋段。最開始接觸 Golang 這種語言的時候,我總感覺它和 Google 單詞比較像,所以一度懷疑二者有什么聯(lián)系。后來一查才發(fā)現(xiàn),二者確實有聯(lián)系,暈… …因為 Golang 語言就是 Google 公司推出的。這種推廣模式,讓我想起了“旺仔牛奶”和“旺子牛奶”。
配圖

好了,言歸正傳,說到文件操作,應該是任何一種語言的基本操作了。那么,Golang 是如何操作文件的呢?

使用 Golang 操作文件時,我們可以理解成對數(shù)據(jù)庫的基礎操作——增、刪、改、查,它們分別對應創(chuàng)建文件、刪除文件、修改文件內(nèi)容、查詢文件內(nèi)容和信息。

今天我們介紹的主要內(nèi)容,根據(jù)下面的流程圖進行展開。

接下來,我們就分別從這四個維度介紹 Golang 是如何操作文件的。

創(chuàng)建文件

首先,我們來創(chuàng)建一個文件 test.txt。在 Golang 中,我們可以使用 os 包來完成文件的創(chuàng)建,其中有專門的文件創(chuàng)建方法——Create()。注意,我們需要提前導入依賴包,具體使用方式可以參考下面的代碼。

代碼實例:

package main

import (
	"fmt" 
	"os"
)
func main() {
   	fmt.Println("開始創(chuàng)建一個文本文件test.txt")
	if _, err := os.Create("test.txt"); err == nil {
		fmt.Println("文件創(chuàng)建成功。。。")
	} else {
		fmt.Println("文件創(chuàng)建失敗。。。")
	}
}

代碼執(zhí)行結果如下:

開始創(chuàng)建一個文本文件test.txt
文件創(chuàng)建成功。。。

通過結果,我們可以看到,我們已經(jīng)成功創(chuàng)建了一個名為 test.txt 的文本文件。是不是非常簡單?好,那我們看下一步。

開心的微笑

修改文件

接下來,我們在上邊的代碼基礎上繼續(xù)完善,實現(xiàn)對文件的修改。我們知道新創(chuàng)建的 test.txt 的文本文件的內(nèi)容肯定是空的,里邊什么信息都沒有,我們現(xiàn)在寫一些內(nèi)容進去。

其實,寫入內(nèi)容到文件中也非常簡單。通過我們創(chuàng)建文件時,返回的 File 對象,我們可以利用它自帶的 Write() 方法把需要的內(nèi)容寫入到文件中。下面一樣,我們通過一段代碼來了解這個過程。

代碼實例:

package main

import (
	"fmt"
	"os"
)
func main() {
   	fmt.Println("開始創(chuàng)建一個文本文件test.txt")
	if f, err := os.Create("test.txt"); err == nil {
		fmt.Println("文件創(chuàng)建成功。。。")
		// 將要寫入文本的內(nèi)容
		_, err=f.Write([]byte("大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。?!"))
		if err == nil {
			fmt.Println("文件寫入內(nèi)容成功。。。")
		}
	} else {
		fmt.Println("文件創(chuàng)建失??!")
	}
}

代碼執(zhí)行結果:

開始創(chuàng)建一個文本文件test.txt
文件創(chuàng)建成功。。。
文件寫入內(nèi)容成功。。。

通過執(zhí)行結果,我們知道我們把相應的信息(大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。。。懭氲?test.txt 文件中了。但是我們還是懷疑文件 test.txt 中的信息是不是真的就是我們想要的內(nèi)容。(魯迅曾經(jīng)說過:程序員還是嚴謹一些比較好,不然實際工作中會吃虧的

魯迅真說過

查詢文件

上面的執(zhí)行結果是說明相應的內(nèi)容寫入到了文件中,但是不夠直觀。接下來,我們查詢一下文件的內(nèi)容,進一步確認文件中寫入了相應的內(nèi)容。

這個過程也屬于常規(guī)操作,但是我們需要用到一個工具包——io/ioutil,這是一個和文件讀寫相關的工具集,當我們操作文件時非常推薦使用它。今天,我們就熟悉一下它的使用。讀取文件內(nèi)容的話,我們主要使用它的 ReadFile() 方法。下面我們通過代碼了解一下吧。

代碼實例:

package main

import (
	"fmt"
	"os"
	"io/ioutil"
)
func main() {
   	fmt.Println("開始創(chuàng)建一個文本文件test.txt")
	if f, err := os.Create("test.txt"); err == nil {
		fmt.Println("文件創(chuàng)建成功。。。")
		// 將要寫入文本的內(nèi)容
		_, err=f.Write([]byte("大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。。?))
		if err == nil {
			fmt.Println("文件寫入內(nèi)容成功。。。")
		}
		bytes, err := ioutil.ReadFile("test.txt")
        if err == nil {
			fmt.Println("test.txt文件的內(nèi)容:",string(bytes))
		} else {
			fmt.Println(err)
		}
	} else {
		fmt.Println("文件創(chuàng)建失?。?)
	}
}

代碼執(zhí)行結果:

開始創(chuàng)建一個文本文件test.txt
文件創(chuàng)建成功。。。
文件寫入內(nèi)容成功。。。
test.txt文件的內(nèi)容: 大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾!??!

結果證明,上一步確實修改了文件的內(nèi)容,把我們想要的內(nèi)容輸入到了文本文件中。同時,通過上面的代碼也實現(xiàn)了查詢文件內(nèi)容的功能。

其實,我們除了查看文件包含的內(nèi)容外,還可以查看文件的一些基本信息,比如名稱、大小、創(chuàng)建時間等。下面來看看我們都可以獲取哪些文件基本信息吧。

上代碼:

package main

import (
	"fmt"
	"os"
	"io/ioutil"
)
func main() {
   	fmt.Println("開始創(chuàng)建一個文本文件test.txt")
	if f, err := os.Create("test.txt"); err == nil {
		fmt.Println("文件創(chuàng)建成功。。。")
		// 將要寫入文本的內(nèi)容
		_, err=f.Write([]byte("大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。?!"))
		if err == nil {
			fmt.Println("文件寫入內(nèi)容成功。。。")
		}
		bytes, err := ioutil.ReadFile("test.txt")
        if err == nil {
			fmt.Println("test.txt文件的內(nèi)容:",string(bytes))
		} else {
			fmt.Println(err)
		}
		// 查詢文件基本信息
		fileinfo, err := os.Stat("test.txt")
		if err == nil {
			fmt.Println("文件名稱:", fileinfo.Name())
			fmt.Println("文件大小:", fileinfo.Size())
			fmt.Println("文件權限:", fileinfo.Mode())
			fmt.Println("文件修改時間:", fileinfo.ModTime())
			fmt.Println("是否為文件夾:", fileinfo.IsDir())
		} else {
			fmt.Println("獲取文件信息失?。?)
		}
	} else {
		fmt.Println("文件創(chuàng)建失??!")
	}
}

代碼執(zhí)行結果:

開始創(chuàng)建一個文本文件test.txt
文件創(chuàng)建成功。。。
文件寫入內(nèi)容成功。。。
test.txt文件的內(nèi)容: 大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。?!
文件名稱: test.txt
文件大小: 145
文件權限: -rw-r--r--
文件修改時間: 2021-04-15 08:51:38.777811891 +0000 UTC
是否為文件夾: false

嗯,不錯,新創(chuàng)建的 test.txt 文本文件大小是145字節(jié),注意:修改時間返回的是0區(qū)時間,中國在東八區(qū),還需要加8才是我們當?shù)氐臅r間。

目前為止,我們已經(jīng)實現(xiàn)了對文件的“增”、“改”、“查”操作,接下來就看“刪”操作吧。

不錯不錯

刪除文件

這個相對就簡單多了,直接利用 os 包的 Remove() 方法,好了,看代碼吧。

代碼實例:

package main

import (
	"fmt"
	"os"
	"io/ioutil"
)
func main() {
   	fmt.Println("開始創(chuàng)建一個文本文件test.txt")
	if f, err := os.Create("test.txt"); err == nil {
		fmt.Println("文件創(chuàng)建成功。。。")
		// 將要寫入文本的內(nèi)容
		_, err=f.Write([]byte("大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。。?))
		if err == nil {
			fmt.Println("文件寫入內(nèi)容成功。。。")
		}
		bytes, err := ioutil.ReadFile("test.txt")
        if err == nil {
			fmt.Println("test.txt文件的內(nèi)容:",string(bytes))
		} else {
			fmt.Println(err)
		}
		err = os.Remove("test.txt")
		if err == nil {
			fmt.Println("文件刪除成功。。。")
		} else {
			fmt.Println("文件刪除失?。?)
		}
	} else {
		fmt.Println("文件創(chuàng)建失?。?)
	}
}

代碼執(zhí)行結果:

開始創(chuàng)建一個文本文件test.txt
文件創(chuàng)建成功。。。
文件寫入內(nèi)容成功。。。
test.txt文件的內(nèi)容: 大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。?!
文件刪除成功。。。

根據(jù)執(zhí)行結果,我們確實把文本文件 test.txt 刪除了。本著嚴謹?shù)膽B(tài)度,我們不妨再進一步驗證一下。增加文件是否存在的校驗邏輯進去,看看代碼執(zhí)行結果。

好了,說干就干!

實例代碼:

package main

import (
	"fmt"
	"os"
	"io/ioutil"
)
func main() {
   	fmt.Println("開始創(chuàng)建一個文本文件test.txt")
	if f, err := os.Create("test.txt"); err == nil {
		fmt.Println("文件創(chuàng)建成功。。。")
		// 將要寫入文本的內(nèi)容
		_, err=f.Write([]byte("大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾?。?!"))
		if err == nil {
			fmt.Println("文件寫入內(nèi)容成功。。。")
		}
		bytes, err := ioutil.ReadFile("test.txt")
        if err == nil {
			fmt.Println("test.txt文件的內(nèi)容:",string(bytes))
		} else {
			fmt.Println(err)
		}
		err = os.Remove("test.txt")
		if err == nil {
			fmt.Println("文件刪除成功。。。")
		} else {
			fmt.Println("文件刪除失??!")
		}
		fileInfo, e := os.Stat("test.txt")
		if fileInfo != nil && e == nil {
			fmt.Println("我檢查了,文件還存在")
		} else if os.IsNotExist(e) {
			fmt.Println("我檢查了,文件確實刪除了")
		}	
	} else {
		fmt.Println("文件創(chuàng)建失??!")
	}
}

代碼執(zhí)行結果:

開始創(chuàng)建一個文本文件test.txt
文件創(chuàng)建成功。。。
文件寫入內(nèi)容成功。。。
test.txt文件的內(nèi)容: 大家好,我是劉振,CSDN博客專家,音視頻領域研發(fā)博主,主頁地址:https://liuzhen.blog.csdn.net/,歡迎騷擾!??!
文件刪除成功。。。
我檢查了,文件確實刪除了

嗯嗯,看到 “我檢查了,文件確實刪除了” 這里,我就放心了。想必,大家也都安心了。

好開心

結尾

不錯,到目前為止,我們已經(jīng)實現(xiàn)了 Golang 對文件的“增”、“刪”、“改”、“查”,對文件的常規(guī)操作也基本掌握了。本人是一個流媒體服務器后端開發(fā),吃飯的語言是C++、Go和Node.js,了解更多音視頻和流媒體知識,歡迎關注我,謝謝。

到此這篇關于一文搞懂Golang文件操作增刪改查功能(基礎篇)的文章就介紹到這了,更多相關go增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Go中如何進行進行內(nèi)存優(yōu)化和垃圾收集器管理

    詳解Go中如何進行進行內(nèi)存優(yōu)化和垃圾收集器管理

    這篇文章主要為大家詳細介紹了Go中如何進行進行內(nèi)存優(yōu)化和垃圾收集器管理,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下
    2023-11-11
  • 瞅一眼就能學會的GO并發(fā)編程使用教程

    瞅一眼就能學會的GO并發(fā)編程使用教程

    隨著互聯(lián)網(wǎng)的普及,互聯(lián)網(wǎng)用戶人數(shù)原來越多,這對系統(tǒng)的性能帶來了巨大的挑戰(zhàn)。這個時候就需要并發(fā)編程了,本文為大家整理了詳細的GO并發(fā)編程使用教程,讓你看完就能學會
    2023-02-02
  • 使用Go語言實現(xiàn)谷歌翻譯功能

    使用Go語言實現(xiàn)谷歌翻譯功能

    這篇文章主要為大家詳細介紹了如何使用Go語言實現(xiàn)谷歌翻譯功能,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-02-02
  • Go語言中的IO操作及Flag包的用法

    Go語言中的IO操作及Flag包的用法

    這篇文章介紹了Go語言中的IO操作及Flag包的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • golang中值類型/指針類型的變量區(qū)別總結

    golang中值類型/指針類型的變量區(qū)別總結

    golang的值類型和指針類型receiver一直是大家比較混淆的地方,下面這篇文章主要給大家總結介紹了關于golang中值類型/指針類型的變量區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • golang 函數(shù)返回chan類型的操作

    golang 函數(shù)返回chan類型的操作

    這篇文章主要介紹了golang 函數(shù)返回chan類型的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 淺析Go語言中數(shù)組的這些細節(jié)

    淺析Go語言中數(shù)組的這些細節(jié)

    這篇文章主要為大家詳細介紹了Go語言中數(shù)組一些細節(jié)的相關資料,文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的可以了解一下
    2022-11-11
  • Go代碼檢查工具golangci-lint安裝使用方法

    Go代碼檢查工具golangci-lint安裝使用方法

    這篇文章主要給大家介紹了關于Go代碼檢查工具golangci-lint安裝使用的相關資料,golangci-lint用于許多開源項目中,比如kubernetes、Prometheus、TiDB等都使用golangci-lint用于代碼檢查,需要的朋友可以參考下
    2024-01-01
  • GO語言異常處理機制panic和recover分析

    GO語言異常處理機制panic和recover分析

    這篇文章主要介紹了GO語言異常處理機制panic和recover,分析了捕獲運行時發(fā)生錯誤的方法,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • Golang接口使用教程詳解

    Golang接口使用教程詳解

    在?Go?語言中接口包含兩種含義:它既是方法的集合,?同時還是一種類型并且在Go?語言中是隱式實現(xiàn)的。本文通過示例詳細介紹了Golang接口的使用,需要的可以參考一下
    2022-09-09

最新評論