68 lines
1.5 KiB
Go
68 lines
1.5 KiB
Go
package fileio
|
|
|
|
import (
|
|
"bufio"
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/HikariKnight/ls-iommu/pkg/errorcheck"
|
|
)
|
|
|
|
// This just implements repetetive tasks I have to do with files
|
|
|
|
func AppendContent(content string, fileName string) {
|
|
// Open the file
|
|
f, err := os.OpenFile(fileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModePerm)
|
|
errorcheck.ErrorCheck(err, fmt.Sprintf("Error opening \"%s\" for writing", fileName))
|
|
defer f.Close()
|
|
|
|
// Write the content
|
|
_, err = f.WriteString(content)
|
|
errorcheck.ErrorCheck(err, fmt.Sprintf("Error writing to %s", fileName))
|
|
}
|
|
|
|
func ReadLines(fileName string) []string {
|
|
content, err := os.Open(fileName)
|
|
errorcheck.ErrorCheck(err, fmt.Sprintf("Error reading file %s", fileName))
|
|
defer content.Close()
|
|
|
|
// Make a list of lines
|
|
var lines []string
|
|
|
|
// Read the file line by line
|
|
scanner := bufio.NewScanner(content)
|
|
for scanner.Scan() {
|
|
lines = append(lines, scanner.Text())
|
|
}
|
|
|
|
// Return all the lines
|
|
return lines
|
|
|
|
}
|
|
|
|
func ReadFile(fileName string) string {
|
|
// Read the whole file
|
|
content, err := os.ReadFile(fileName)
|
|
errorcheck.ErrorCheck(err, fmt.Sprintf("Failed to ReadFile on %s", fileName))
|
|
|
|
// Return all the lines as one string
|
|
return string(content)
|
|
|
|
}
|
|
|
|
func FileExist(fileName string) bool {
|
|
var exist bool
|
|
|
|
// Check if the file exists
|
|
if _, err := os.Stat(fileName); !errors.Is(err, os.ErrNotExist) {
|
|
// Set the value to true
|
|
exist = true
|
|
} else {
|
|
// Set the value to false
|
|
exist = false
|
|
}
|
|
|
|
// Return if the file exists
|
|
return exist
|
|
}
|