github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/pkg/file/asciifiles.go (about)

     1  // Copyright 2021 The TrueBlocks Authors. All rights reserved.
     2  // Use of this source code is governed by a license that can
     3  // be found in the LICENSE file.
     4  
     5  package file
     6  
     7  import (
     8  	"bufio"
     9  	"fmt"
    10  	"io"
    11  	"os"
    12  	"strings"
    13  
    14  	"github.com/ethereum/go-ethereum/log"
    15  )
    16  
    17  func AsciiFileToLines(filename string) []string {
    18  	file, err := os.OpenFile(filename, os.O_RDONLY, 0)
    19  	if err != nil {
    20  		return []string{}
    21  	}
    22  	scanner := bufio.NewScanner(file)
    23  	scanner.Split(bufio.ScanLines)
    24  	var ret []string
    25  	for scanner.Scan() {
    26  		ret = append(ret, scanner.Text())
    27  	}
    28  	file.Close()
    29  	return ret
    30  }
    31  
    32  func AsciiFileToString(fileName string) string {
    33  	if !FileExists(fileName) {
    34  		return ""
    35  	}
    36  
    37  	contents, err := os.ReadFile(fileName)
    38  	if err != nil {
    39  		log.Error(fmt.Sprintf("%v", err))
    40  		return ""
    41  	}
    42  
    43  	return string(contents)
    44  }
    45  
    46  func StringToAsciiFile(filename, value string) error {
    47  	file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
    48  	if err != nil {
    49  		return err
    50  	}
    51  	defer file.Close()
    52  	_, err = io.WriteString(file, value)
    53  	if err != nil {
    54  		return err
    55  	}
    56  	return file.Sync()
    57  }
    58  
    59  func AppendToAsciiFile(filename, value string) error {
    60  	file, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
    61  	if err != nil {
    62  		return err
    63  	}
    64  	defer file.Close()
    65  	if _, err := file.Write([]byte(value)); err != nil {
    66  		return err
    67  	}
    68  	return file.Sync()
    69  }
    70  
    71  func LinesToAsciiFile(filename string, value []string) error {
    72  	file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
    73  	if err != nil {
    74  		return err
    75  	}
    76  	defer file.Close()
    77  
    78  	lines := strings.Join(value[:], "\n") + "\n"
    79  	_, err = io.WriteString(file, lines)
    80  	if err != nil {
    81  		return err
    82  	}
    83  
    84  	return file.Sync()
    85  }