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


致读者: 小时百科一直以来坚持所有内容免费,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利