Go file

@Joy :/media/gaojie/Linux/Go/workspace/file$ tree
.
├── bin
│   └── file
├── src
│   ├── file.go
│   └── file.go~

└── tmp

file.go源码如下:

package main

import (
	"os"
	"log"
)

func main(){
	if(len(os.Args) < 3){
		log.Fatal("Usage <command> <fileName> [data]");
	}
	log.Printf("args:%s\n", os.Args);
	command := os.Args[1];
	fileName :=	os.Args[2];

	//打开文件
	file, err := os.Open(fileName);
    if err != nil {
        log.Println(err)
		file, err = os.Create(fileName);
		if(err != nil){
			log.Fatal(err)
		}
    }

	//查看文件属性
	fileInfo, _ := file.Stat()
	log.Printf("name:%s, size:%d\n", fileInfo.Name(), fileInfo.Size());

	switch command {
		case "read":
			buf := make([]byte, fileInfo.Size())
			readSize, _ := file.Read(buf)
			log.Printf("readSize:%d\n", readSize)
			log.Print("bytes:%s\n", string(buf));

		case "write":
			if len(os.Args) != 4 {
				MsgExit("Usage: <command> <file> <data>")
			}
			data := os.Args[3];
			writeSize, err := file.WriteString(data);
			if err == nil{
				log.Printf("wirte sucess!%d\n", writeSize)
			}
	}


}

func MsgExit( v ...interface{}){
	//fatal 函数输出日志后,会调用系统的os.Exit(1) 推出程序.
	log.Fatal(v)
}

编译和运行

go build -o bin/file src/file.go
gaojie@Joy:/media/gaojie/Linux/Go/workspace/file$ ./bin/file write tmp  gaojie
2013/10/05 15:20:53 args:[./bin/file write tmp gaojie]
2013/10/05 15:20:53 name:tmp, size:3
gaojie@Joy:/media/gaojie/Linux/Go/workspace/file$ ./bin/file read tmp 
2013/10/05 15:20:56 args:[./bin/file read tmp]
2013/10/05 15:20:56 name:tmp, size:3
2013/10/05 15:20:56 readSize:3
2013/10/05 15:20:56 bytes:%s
xxx


转载于:https://my.oschina.net/u/139611/blog/166871

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值