贡献者: addis
为了使用方便 SLISC 提供了一些常见的文件读相关功能,例如创建和删除文件/文件夹,获取文件列表(可以包括所有子目录的文件),获取某个拓展名的文件列表等等。这些函数对 Windows 和 Linux 系统都兼容。
Bool file_exist(Str_I fname, Bool_I case_sens = true)
判断指定文件是否存在
Bool dir_exist(Str_I path)
判断路径是否存在
Long file_size(Str_I fname)
获取文件大小(字节数),fname
是文件名。
Str path2dir(Str_I fname)
从 “路径+文件” 字符串中提取 “路径” 部分
void mkdir(Str_I path)
创建路径
void rmdir(Str_I path)
删除路径
void ensure_dir(Str_I dir_or_file)
如果路径不存在,创建该路径(可以任意多层)
void file_list(vecStr_O fnames, Str_I path, Bool_I append = false)
列出指定路径中所有文件,append = true
则 fnames
原有的元素不被清空。
void file_list_full(vecStr_O fnames, Str_I path, Bool_I append = false)
和 file_list()
相同,只是文件名包含路径。
void folder_list(vecStr_O folders, Str_I path, Bool_I append = false)
列出指定路径中所有文件夹
void folder_list_full(vecStr_O folders, Str_I path, Bool_I append = false)
和 folder_list()
相同,但包含路径。
void file_list_r(vecStr_O fnames, Str_I path, Bool_I append = false)
列出指定路径中所有文件,包括所有子文件夹中的。
void file_ext(vecStr_O fnames_ext, vecStr_I fnames, Str_I ext, Bool_I keep_ext = true, Bool_I append = false)
在文件列表中选出所有具有某个拓展名的文件
void file_list_ext(vecStr_O fnames, Str_I path, Str_I ext, Bool_I keep_ext = true, Bool_I append = false)
在某个路径中寻找所有具有某个拓展名的文件
void file_copy(Str_I fname_out, Str_I fname_in, Bool_I replace = false)
复制文件 replace
用于替换目标的同名文件,否则会一直提示,需要手动删除程序才能继续。
void file_copy(Str_I fname_out, Str_I fname_in, Str_IO buffer, Bool_I replace = false)
用户提供缓存 buffer
的 file_copy
,提高速度。
void file_move(Str_I fname_out, Str_I fname_in, Bool_I replace = false)
移动文件。
void file_move(Str_I fname_out, Str_I fname_in, Str_IO buffer, Bool_I replace = false)
带用户缓存的版本。
void open_bin(ofstream &fout, Str_I fname)
打开二进制文件写入
void open_bin(ifstream &fin, Str_I fname)
打开二进制文件读取
void write(const Char *data, Long_I Nbyte, Str_I fname)
把字符串写入二进制文件
Long read(Char *data, Long_I Nbyte, Str_I fname)
读取二进制文件到字符串,返回实际上读取到的字节数。
void write(Str_I str, Str_I fname)
把字符串写入二进制文件
void write_vec_str(vecStr_I vec_str, Str_I fname)
把每个字符串写入文件中的一列
void read_vec_str(vecStr_O vec_str, Str_I fname)
void read(Str_O str, Str_I fname)
读取二进制文件到字符串
void write(ofstream &fout, Char_I s)
把一个 Char
写入二进制文件,也可以是 Int
, Llong
, Doub
, Comp
,Str
。
void read(ifstream &fin, Char_I s)
和 write
同理。
void read(CmatInt_O mat, Str_I file, Long_I skip_lines = 0)
从一个文件中读取密矩阵,矩阵会被 .resize
成需要的形状。CmatInt
也可以是 CmatLlong
或 CmatDoub
void read(VecDoub_O v, Str_I file, Long_I skip_lines = 0)
从文件中读取单列矢量。
void last_modified(Str_O yymmddhhmmss, Str_I fname)
获取文件的最后修改时间。
void set_buff(ofstream &fout, Str_IO buffer)
缓存越大,速度越快。
Bool little_endian()
操作系统是否是 little_endian
的。
void change_endian(Char *data, Long_I elm_size, Long_I Nelm)
把一个字符串中每个长度为 elm_size
的单元前后翻折。