1use std::fs::File;
2use std::{io, io::Read};
3use std::path::Path;
4use std::str;
5
6pub fn get_filepath<S: AsRef<str>>(file_path: S) -> Option<String> {
7 match Path::new(file_path.as_ref()).parent() {
8 Some(file_path) => match file_path.to_str() {
9 Some(file_path) => Some(file_path.into()),
10 None => None,
11 },
12 None => None,
13 }
14}
15
16pub fn get_filename<S: AsRef<str>>(file_name: S) -> Option<String> {
17 match Path::new(file_name.as_ref()).file_name() {
18 Some(file_name) => match file_name.to_str() {
19 Some(file_name) => Some(file_name.into()),
20 None => None,
21 },
22 None => None,
23 }
24}
25
26pub fn read_file_buf<S: AsRef<str>>(path: S) -> Result<Vec<u8>, io::Error> {
27 let path = Path::new(path.as_ref());
28
29 let mut buffer = Vec::new();
30 File::open(&path)?.read_to_end(&mut buffer).map(|_| buffer)
31}
32
33pub fn read_file_string<S: AsRef<str>>(path: S) -> Result<String, io::Error> {
34 let path = Path::new(path.as_ref());
35
36 let mut buffer = String::new();
37 File::open(&path)?.read_to_string(&mut buffer).map(|_| buffer)
38}