45 lines
730 B
Go
45 lines
730 B
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
func fileLen(filename string) (int, error) {
|
|
const blockSize = 128
|
|
file, err := os.Open(filename)
|
|
if err != nil {
|
|
fmt.Println("Could not open file!")
|
|
return 0, err
|
|
}
|
|
defer file.Close()
|
|
dataBlock := make([]byte, blockSize)
|
|
totalCount := 0
|
|
for {
|
|
count, err := file.Read(dataBlock)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
totalCount += count
|
|
if count < blockSize {
|
|
break
|
|
}
|
|
}
|
|
return totalCount, nil
|
|
}
|
|
|
|
func main() {
|
|
if len(os.Args) < 2 {
|
|
err := errors.New("Program doesn't have any arguments. Please pass argument")
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
fileSize, err := fileLen(os.Args[1])
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
fmt.Println(fileSize)
|
|
}
|