zoukankan      html  css  js  c++  java
  • 文件操作

    func main() {
    	var wireteString = "测试n"       # 定义一个输入字符串
    	var filename = "./output1.txt"  # 定义一个输出文件名字
    	var f *os.File                  # 按位去文件对象
    	var err1 error                  # 定义一个错误对象
    
    	# 第一种方式: 使用 io.WriteString 写入文件 
    	if checkFileIsExist(filename) { //如果文件存在
    		f, err1 = os.OpenFile(filename, os.O_APPEND, 0666) //打开文件
    		fmt.Println("文件存在")
    	} else {
    		f, err1 = os.Create(filename) //创建文件
    		fmt.Println("文件不存在")
    	}
    	check(err1)
        
        # 写入文件
    	n, err1 := io.WriteString(f, wireteString) //写入文件(字符串)
    	check(err1)
    	fmt.Printf("写入 %d 个字节n", n)
    
    	# 第二种方式: 使用 ioutil.WriteFile 写入文件 
        # 定义一个字节类型切片,内部元素是写入的字符串
    	var d1 = []byte(wireteString)  # 将io流写入到文件中,并且定义文件的权限
    	err2 := ioutil.WriteFile("./output2.txt", d1, 0666) //写入文件(字节数组)
    	check(err2)
    
        # 第三种方式:  使用 File(Write,WriteString) 写入文件 
    	f, err3 := os.Create("./output3.txt") //创建文件
    	check(err3)
    	defer f.Close()  # 最后都会关闭文件
    	n2, err3 := f.Write(d1) //写入文件(字节数组) 写入的也是流,返回的是文件个数,
    	check(err3)
    	fmt.Printf("写入 %d 个字节n", n2)
    	n3, err3 := f.WriteString("writesn") //写入文件(字符数组)
    	fmt.Printf("写入 %d 个字节n", n3)
    	f.Sync()
    
    	# 第四种方式:  使用 bufio.NewWriter 写入文件 
    	w := bufio.NewWriter(f) //创建新的 Writer 对象
    	n4, err3 := w.WriteString("bufferedn")
    	fmt.Printf("写入 %d 个字节n", n4)
    	w.Flush()
    	f.Close()
    }
    

    场景:需要写入文件,并且不需要输出谢了多少个字符
    使用了ioutil

    	content := []byte(tmp)  #tmp获取的输入字符串
    	//将指定内容写入到文件中
    	err1 := ioutil.WriteFile(dest, content, 0755) # dest是存储文件的名字
        # 只返回一个错误对象
    	if err1 != nil {
    		fmt.Println("write error", err1)
    	} else {
    		fmt.Printf("%v", 1)
    	}
    

    创建文本文件:

     f,err := os.Create(fileName)
        defer f.Close()
        if err !=nil {
            fmt.Println(err.Error())
        } else {
            _,err=f.Write([]byte("要写入的文本内容"))
            checkErr(err)
        }
    

    读取文件

    f, err := os.OpenFile(fileName, os.O_RDONLY,0600)
        defer f.Close()
        if err !=nil {
            fmt.Println(err.Error())
        } else {
         contentByte,err=ioutil.ReadAll(f)
            checkErr(err)
    fmt.Println(string(contentByte))
        }
    

    OpenFile的用法

    //打开方式
    const (
    //只读模式
    O_RDONLY int = syscall.O_RDONLY // open the file read-only.
    //只写模式
    O_WRONLY int = syscall.O_WRONLY // open the file write-only.
    //可读可写
    O_RDWR int = syscall.O_RDWR // open the file read-write.
    //追加内容
    O_APPEND int = syscall.O_APPEND // append data to the file when writing.
    //创建文件,如果文件不存在
    O_CREATE int = syscall.O_CREAT // create a new file if none exists.
    //与创建文件一同使用,文件必须存在
    O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist
    //打开一个同步的文件流
    O_SYNC int = syscall.O_SYNC // open for synchronous I/O.
    //如果可能,打开时缩短文件
    O_TRUNC int = syscall.O_TRUNC // if possible, truncate file when opened.
    )
    
  • 相关阅读:
    PHP线程安全
    Oracle中MD5+Base64加密实现
    1002. A+B for Polynomials (25)
    1001. A+B Format (20)
    Rails,uva 514
    Database,Uva1592
    Hello World for U
    D3.js 力导向图
    从零开始CSS(一 2016/9/21)
    从零开始HTML(三 2016/9/20)
  • 原文地址:https://www.cnblogs.com/cizao/p/11481968.html
Copyright © 2011-2022 走看看