Fsutils Function Examples
Format a file size given in bytes into a human-readable format
package main
import (
"fmt"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
sizes := []int64 {0 , 512 , 1024 , 1048576 , 1073741824 , 1099511627776 }
for _ , size := range sizes {
fmt .Println (fsutils .FormatFileSize (size ))
}
}
0 B
512 B
1.00 KB
1.00 MB
1.00 GB
1.00 TB
Search for files with the specified extension
package main
import (
"fmt"
"log"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
dir := "/path/to/your/dir"
txtFiles , err := fsutils .FindFiles (dir , ".txt" )
if err != nil {
log .Fatalf ("Error finding .txt files: %v" , err )
}
fmt .Println ("TXT Files:" , txtFiles )
logFiles , err := fsutils .FindFiles (dir , ".log" )
if err != nil {
log .Fatalf ("Error finding .log files: %v" , err )
}
fmt .Println ("LOG Files:" , logFiles )
allFiles , err := fsutils .FindFiles (dir , "" )
if err != nil {
log .Fatalf ("Error finding all files: %v" , err )
}
fmt .Println ("All Files:" , allFiles )
}
TXT Files: [/path/to/your/dir/file1.txt /path/to/your/dir/file2.txt /path/to/your/dir/file4.txt]
LOG Files: [/path/to/your/dir/file3.log]
All Files: [/path/to/your/dir/file1.txt /path/to/your/dir/file2.txt /path/to/your/dir/file3.log /path/to/your/dir/file4.txt]
Calculate the total size (in bytes) of all files in a directory
package main
import (
"fmt"
"log"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
dir := "/path/to/your/dir"
size , err := fsutils .GetDirectorySize (dir )
if err != nil {
log .Fatalf ("Error calculating directory size: %v" , err )
}
fmt .Printf ("The total size of directory \" %s\" is %dB\n " , dir , size )
}
The total size of directory "/path/to/your/dir" is 6406B
package main
import (
"fmt"
"log"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
file1 := "/path/to/your/file1.txt"
file2 := "/path/to/your/file2.txt"
identical , err := fsutils .FilesIdentical (file1 , file2 )
if err != nil {
log .Fatalf ("Error comparing files: %v" , err )
}
if identical {
fmt .Printf ("The files %s and %s are identical\n " , file1 , file2 )
} else {
fmt .Printf ("The files %s and %s are not identical\n " , file1 , file2 )
}
}
The files /path/to/your/file1.txt and /path/to/your/file2.txt are identical
package main
import (
"fmt"
"log"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
dir1 := "/path/to/your/dir1"
dir2 := "/path/to/your/dir2"
identical , err := fsutils .DirsIdentical (dir1 , dir2 )
if err != nil {
log .Fatalf ("Error comparing directories: %v" , err )
}
if identical {
fmt .Printf ("The directories %s and %s are identical.\n " , dir1 , dir2 )
} else {
fmt .Printf ("The directories %s and %s are not identical.\n " , dir1 , dir2 )
}
}
The directories /path/to/your/dir1 and /path/to/your/dir2 are identical.
package main
import (
"fmt"
"log"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
file := "example.txt"
metadata , err := fsutils .GetFileMetadata (file )
if err != nil {
log .Fatal (err )
return
}
fmt .Printf (
"Name: %s, Size: %d, IsDir: %t, ModTime: %s, Mode: %v, Path: %s, Ext: %s, Owner: %s\n " ,
metadata .Name , metadata .Size ,
metadata .IsDir , metadata .ModTime .String (),
metadata .Mode , metadata .Path ,
metadata .Ext , metadata .Owner ,
)
}
Name: example.txt, Size: 172, IsDir: false, ModTime: 2025-01-20 15:03:00.189199994 +0100 CET, Mode: -rw-rw-r--, Path: /path/to/your/dir/example.txt, Ext: .txt, Owner: owner
package main
import (
"fmt"
"log"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
dir := "example/"
metadata , err := fsutils .GetFileMetadata (dir )
if err != nil {
log .Fatal (err )
return
}
fmt .Printf (
"Name: %s, Size: %d, IsDir: %t, ModTime: %s, Mode: %v, Path: %s, Ext: %s, Owner: %s\n " ,
metadata .Name , metadata .Size ,
metadata .IsDir , metadata .ModTime .String (),
metadata .Mode , metadata .Path ,
metadata .Ext , metadata .Owner ,
)
}
Name: example, Size: 4096, IsDir: true, ModTime: 2025-01-20 15:06:23.057206656 +0100 CET, Mode: drwxrwxr-x, Path: /path/to/your/dir/example, Ext: , Owner: owner
Marshal File's Metadata to JSON
package main
import (
"encoding/json"
"fmt"
"log"
"github.com/kashifkhan0771/utils/fsutils"
)
func main () {
file := "example.txt"
metadata , err := fsutils .GetFileMetadata (file )
if err != nil {
log .Fatal (err )
return
}
json , err := json .Marshal (& metadata )
if err != nil {
log .Fatal (err )
return
}
fmt .Println (string (json ))
}
{
"name" : " example.txt" ,
"size" : 172 ,
"is_dir" : false ,
"mod_time" : " 2025-01-20T15:06:34.812677487+01:00" ,
"mode" : 436 ,
"path" : " /path/to/your/dir/example.txt" ,
"ext" : " .txt"
}