SLISC 的文件读写

                     

贡献者: 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 = truefnames 原有的元素不被清空。

   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) 用户提供缓存 bufferfile_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, CompStr

   void read(ifstream &fin, Char_I s)write 同理。

   void read(CmatInt_O mat, Str_I file, Long_I skip_lines = 0) 从一个文件中读取密矩阵,矩阵会被 .resize 成需要的形状。CmatInt 也可以是 CmatLlongCmatDoub

   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 的单元前后翻折。

                     

© 小时科技 保留一切权利