go語言中常用的文件和文件夾操作函數


package main;

import (
	"os"
	"log"
	"time"
	"fmt"
)

//一些常用的文件操作函數

func main() {
	//創建目錄
	//perm權限設置,os.ModePerm為0777
	err := os.Mkdir("./tmp", os.ModePerm);
	if err != nil {
		log.Fatal(err);
	}

	//創建多級目錄
	err2 := os.MkdirAll("./a/b/c", os.ModePerm);
	if err2 != nil {
		log.Fatal(err2);
	}

	//等個3秒,看目錄是否創建成功
	time.Sleep(time.Second * 3);

	//刪除目錄
	//如果目錄下有文件或其他目錄會出錯
	err3 := os.Remove("./tmp");
	if err3 != nil {
		log.Fatal(err3);
	}

	//刪除多級目錄
	//如果是單個名稱,則刪除所有子目錄
	err4 := os.RemoveAll("./a/b/c");
	if err4 != nil {
		log.Fatal(err4);
	}

	//文件操作
	//創建文件
	//Create會返回一個文件對象,默認權限0666
	file1, err5 := os.Create("./1.log");
	defer file1.Close();
	if err5 != nil {
		log.Fatal(err5);
	}

	//通過文件描述符(文件句柄)來創建文件
	file2 := os.NewFile(file1.Fd(), "./2.log");
	defer file2.Close();

	//打開文件
	//Open內部調用OpenFile,以只讀方式打開
	file3, err6 := os.Open("./1.txt");
	defer file3.Close();
	if err6 != nil {
		log.Fatal(err6);
	}

	//OpenFile指定文件打開方式,只讀,只寫,讀寫和權限
	file4, err7 := os.OpenFile("./2.txt", os.O_RDWR, 0666);
	defer file4.Close();
	if err7 != nil {
		log.Fatal(file4);
	}

	//向文件寫入數據
	file4.Write([]byte("我寫入數據"));

	//在指定位置寫入數據
	file4.WriteAt([]byte("指定位置寫入數據"), 1024);

	//直接寫入string
	file4.WriteString("你好世界");

	//讀取文件數據

	//將文件偏移量設置為開頭
	file4.Seek(0, 0);
	tmp := make([]byte, 256);
	//Read讀取數據到[]byte中
	for n, _ := file4.Read(tmp); n != 0; n, _ = file4.Read(tmp) {
		fmt.Println(string(tmp));
	}

	//ReadAt從off指定位置讀取數據到[]byte中
	file4.Seek(0, 0);
	var off int64 = 0;
	for {
		n, _ := file4.ReadAt(tmp, off);
		off += int64(n);
		if n == 0 {
			break;
		}

		fmt.Println(string(tmp));
	}

	//刪除文件
	//Go中刪除文件和刪除文件夾同一個函數
	err8 := os.Remove("./1.txt");
	if err8 != nil {
		log.Fatal(err8);
	}
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM