usc 1.20230730.1349

A common lib for unitedservices
Documentation
use std::io::{Read, Seek, SeekFrom, Write};
use crate::myerror::MyError;
use std::path::Path;




pub fn file_read(path:&str)->Result<String,MyError>{
    let mut file = std::fs::File::open(path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    Ok(contents)
}
pub fn file_write(path:&str,content:&str)-> Result<usize,MyError> {
    let mut file=std::fs::OpenOptions::new().create(true).append(false).write(true).truncate(true).open(path)?;
    let bytes=content.as_bytes();
    file.write_all(bytes)?;
    file.write_all("\n".as_bytes());
    Ok(bytes.len())
}

pub fn file_read_string(path:&str)->String{
    let  fileresult=file_read(path);
    fileresult.is_err() && return String::new();
    fileresult.unwrap()
}
pub fn file_read_bytes(path:&str)->Result<Vec<u8>,MyError>{
    let mut file = std::fs::File::open(path)?;
    let mut bytes= vec![];
    file.seek(SeekFrom::Start(0));
    file.read_to_end(&mut bytes);
    Ok(bytes)
}

pub fn file_write_bytes(path:&str,bytes:&[u8])-> Result<usize,MyError> {

    let target_path = Path::new(path);
    let mut file:std::fs::File;
    if !target_path.exists(){
        file = std::fs::File::create(path)?;
    } else{
        file = std::fs::File::open(path)?;
    }

    file.write_all(bytes)?;
    Ok(bytes.len())
}

pub fn file_append(path:&str,content:&str)-> Result<usize,MyError> {
    let mut file=std::fs::OpenOptions::new().create(true).write(true).append(true).open(path)?;
    let bytes=content.as_bytes();
    file.write_all(bytes)?;
    file.write_all("\n".as_bytes());
    Ok(bytes.len())
}