当前位置: 首页 > news >正文

wordpress建电影网站酷炫网站设计风格

wordpress建电影网站,酷炫网站设计风格,软件培训学校,视频号视频下载助手app文章目录 为什么要单独设计文件工具类#xff1f;整体实现Filesize ——文件大小stat接口 LastMTime ——最后一次修改时间LastATime —— 最后一次访问时间FileName —— 文件名称GetPostLen ——获取文件指定位置 指定长度的数据GetContnet —— 读取文件数据SetContent ——… 文章目录 为什么要单独设计文件工具类整体实现Filesize ——文件大小stat接口 LastMTime ——最后一次修改时间LastATime —— 最后一次访问时间FileName —— 文件名称GetPostLen ——获取文件指定位置 指定长度的数据GetContnet —— 读取文件数据SetContent ——向文件中写入数据Compress —— 压缩UnCompress —— 解压缩firesystem手册使用Exists—— 判断文件是否存在CreateDirectory ——创建目录ScanDirectory ——返回指定文件夹中所有的文件路径名称 整体代码util.hppmakefilecloud.cpp (测试代码) 为什么要单独设计文件工具类 由于在客户端和服务器端中 都涉及到文件的读写 所以要先设计 封装文件操作类当该类设计好后 对文件的操作时就会变的简单化 功能 1. Filesize 获取文件的大小 2. LastModTime 获取文件最后一次修改时间 3. LastAccessTime 获取文件最后一次访问时间 4. FileName 获取文件路径名中的文件名称 5. SetContent 向文件中写入数据 6. GetContnet 读取文件数据 7. GetPostLen 获取文件指定位置 指定长度的数据 8. GetDirectory 返回指定文件夹中所有的文件路径名称 9. Exists 判断文件是否存在若不存在则创建 10. CreateDirectory 创建目录 11. Compress 文件压缩 12. Uncompress 文件解压缩 整体实现 创建一个 util.hpp 在其内部 创建一个 cloud 命名空间 在cloud中创建一个FileUtil类 在私有权限中设置一个 _filename 整体文件名称(可能包含文件路径) Filesize ——文件大小 stat接口 stat 通过文件的路径名称访问文件获取文件的状态属性信息再放入到buf中 若返回小于0则表示访问失败 stat结构体中包含的属性最主要的有 st_size(文件大小) st_atime(文件最后一次访问时间) st_mtime(文件最后一次修改时间) 若访问文件失败则打印 get file size failed 若访问成功则返回 stat类型结构体 的 st_size 即可 表示 文件大小 LastMTime ——最后一次修改时间 同样使用stat函数若返回值小于0则说明访问失败 返回 get fire size faied 若访问成功则 返回 stat结构体的 st_mtime 即可 表示 文件最后一次修改时间 LastATime —— 最后一次访问时间 使用stat函数若返回值小于0则说明访问失败 返回 get fire size faied 若访问成功则 返回 stat结构体的 st_atime 即可 表示 文件最后一次访问时间 FileName —— 文件名称 路径之间都是以 / 来进行间隔的 所以只需找到最后一个 / 从该/ 开始的下一个位置开始 就是文件名的起始位置 string 中的 find_last_of()函数可以用来查找某个字符最后一次出现的位置 若没有找到 / ,则表示 filename 就为 文件名称 若找到/ 则从 /的下一个位置开始截断 直到 文件末尾 将子串整体作为文件名称返回 GetPostLen ——获取文件指定位置 指定长度的数据 获取文件是要从文件中读取数据 所以使用 ifstream 类型 ios::binary 表示 二进制 所以 以二进制的形式打开 _filename 文件 若打开文件失败则打印 open file failed 若打开文件成功还需判断下pos位置 是否超过 文件的整体大小 若超过文件整体大小则 返回 false 使用 seekg 跳转到文件pos位置 调整body的大小为 文件大小len 将文件数据放入 body中 若读取出错则返回false GetContnet —— 读取文件数据 先通过FileSize 获取文件大小 再通过调用 GetPostLen 函数 即可读取到整个文件的数据 SetContent ——向文件中写入数据 写入文件数据 就为输入 所以使用 ofstream 类型 使用 二进制的方式打开文件 filename 打开失败则返回false 将body数据写入到文件中 若写入失败则返回false Compress —— 压缩 将filename的文件内容 全部读取到 body中 若读取失败则返回 false 选择 LZIP 压缩格式body作为文件内容使用 pack 进行压缩返回值就是压缩之后的数据 通过packname实例化一个新对象 fu 再将 压缩的数据 packed 读取到文件中 若写入失败则返回false 若写入成功则返回true UnCompress —— 解压缩 将filename的文件内容 全部读取到 body中 若读取失败则返回 false 将body中的文件内容进行解压缩 通过filename实例化一个新对象 fu 再将 解压缩的数据 unpacked 读取到文件中 若写入失败则返回false 若写入成功则返回true firesystem手册使用 在C17中 支持的一个文件系统 filesystem 完成目录的遍历操作 点击查看firesystem手册地址 打开文档后 向下翻 找到 create_directory 创建目录(单层级) create_directories 创建目录(多层级) 只需传入目录的路径名即可 exists 文件是否存在 将文件名传入即可 遍历目录的迭代器 directory_iterator Exists—— 判断文件是否存在 fs作为文件系统的命名空间 调用 filesystem手册中的 exists 接口 传入文件名 即可达到 判断文件是否存在的作用 CreateDirectory ——创建目录 如果不存在就创建如果存在就不需要创建了 调用 filesystem手册中的 create_directories 接口 传入目录的路径名 即可达到 创建目录的作用 ScanDirectory ——返回指定文件夹中所有的文件路径名称 需要先判断在遍历的过程中是否为文件若不为文件则不进行操作 借助firesystem手册中的 is_directory 作用为 判断是否是一个目录 将文件名传入即可 迭代器的返回数据 不是一个 string 类型 所以当要添加文件时 不能直接向arry中添加 p 借助firesystem手册中的 path 类 进行实例化 一个path对象 想要返回文件的相对路径 所以借助path类中的 relative_path 最终为 获取带有路径的文件名 中的 string 对象 整体代码 util.hpp #includeiostream #includefstream #includestring #includevector #includesys/stat.h #includebundle.h #includeexperimental/filesystemnamespace cloud {namespace fsstd::experimental::filesystem;class FileUtil{private:std::string _filename;//文件名称public:FileUtil(const std::string filename):_filename(filename)//构造函数 {}int64_t FileSize()//文件大小{struct stat st;if( stat(_filename.c_str(),st)0){std::coutget file size failed!\n; return -1;}return st.st_size; }time_t LastMTime()//文件最后一次修改时间{struct stat st;if( stat(_filename.c_str(),st)0){std::coutget file size failed!\n;return -1;} return st.st_mtime; }time_t LastATime()//文件最后一次访问时间{struct stat st;if( stat(_filename.c_str(),st)0){std::coutget file size failed!\n;return -1;}return st.st_atime;}std::string FileName()//文件名称{// ./abc/test.txtsize_t pos_filename.find_last_of(/);if(posstd::string::npos){return _filename;}return _filename.substr(pos1);}bool GetPostLen(std:: string *body,size_t pos,size_t len)//获取文件数据{std::ifstream ifs;ifs.open(_filename,std::ios::binary);//以二进制方式打开文件if(ifs.is_open()false){std::coutread file failedstd::endl;return false;}//打开成功获取文件数据size_t fsizethis-FileSize();//获取文件大小if(poslenfsize)//若pos开始位置超过了文件大小{std::coutget file len is errorstd::endl;return false;}ifs.seekg(pos,std::ios::beg);//从文件起始位置偏移到pos位置处body-resize(len);ifs.read((*body)[0], len);//读取文件所有数据到 body中if(ifs.good()false)//读取出错{std::cout get file content fialed std::endl;ifs.close();return false;}ifs.close();return true;}bool GetContent(std::string *body) //获取整体文件数据{size_t fsizethis-FileSize();//获取文件大小return GetPostLen(body,0,fsize);} bool Setcontent(const std::string body)//写入文件数据{ std::ofstream ofs;ofs.open(_filename,std::ios::binary); //以二进制方式打开文件if(ofs.is_open()false)//打开失败{std::coutwrite open file failedstd::endl;return false;}ofs.write(body[0], body.size());//将body数据写入到文件中if(ofs.good()false)//写入失败{std::coutwrite file content failedstd::endl;ofs.close(); return false;}ofs.close();return true;}bool compress(const std::string packname) //压缩{//读取文件数据std::string body;if(this-GetContent(body)false){std::coutcompress get file content failedstd::endl;return false;} //对数据进行压缩std::string packedbundle::pack(bundle::LZIP,body);//将压缩数据存储到压缩包文件中FileUtil fu(packname);if(fu.Setcontent(packed)false)//写入数据失败{std::coutcompress write packed data failedstd::endl;return false;}return true;}bool UnCompress(const std::string filename)//解压缩{//将当前压缩包数据读取出来std::string body;if(this-GetContent(body)false)//获取文件内容{std::coutcompress get file content failedstd::endl;return false;} //对压缩的数据进行解压缩std::string unpackedbundle::unpack(body);//将解压缩的数据写入到新文件中FileUtil fu(filename);if(fu.Setcontent(unpacked)false)//写入数据失败{std::coutuncompress write packed data failedstd::endl;return false;}return true;}bool Exists()//判断文件是否存在{return fs::exists(_filename);}bool CreateDirectory()//创建目录{if(this-Exists()){return true;}return fs::create_directories(_filename);}bool ScanDirectory(std::vectorstd::string * arry)//浏览目录{for (auto p : fs::directory_iterator(_filename))//遍历目录{if(fs::is_directory(p)true)//检测遍历到的文件 是一个文件夹 就不进行操作{continue;}//普通文件才进行操作//relative_path 表示带有路径的文件名arry-push_back(fs::path(p).relative_path().string());}return true;}}; } makefile cloud:cloud.cpp util.hpp bundle.cppg $^ -o $ -lpthread -lstdcfs .PHONY:clean clean:rm -f cloud cloud.cpp (测试代码) #includeutil.hppvoid FileUtilTest(const std::string filename){/*1.cloud::FileUtil fu(filename);std::coutfu.FileSize() std::endl;std::coutfu.LastMTime()std::endl;std::coutfu.LastATime()std::endl;std::coutfu.FileName() std::endl;2.// 将 filename 文件内容 全部读取到 body中cloud::FileUtil fu(filename);std::string body;fu.GetContent(body);//读取文件数据//再将body中的数据内容 读取到文件中cloud::FileUtil nfu(./hello.txt);nfu.Setcontent(body); //将body写入文件中return;3.//将packname数据进行压缩 再将其进行解压 放入 hello.txt中std::string packnamefilename .lz;cloud::FileUtil fu(filename);fu.compress( packname);//将压缩的数据放入packname中cloud::FileUtil pfu( packname);pfu.UnCompress(./hello.txt);//将packname中的数据放入 hello.txt中return;*/cloud::FileUtil fu(filename);fu.CreateDirectory();//创建目录std::vectorstd::stringarry;fu.ScanDirectory(arry);//浏览目录for(auto a: arry){std::coutastd::endl;}return; } int main(int argc,char*argv[]){FileUtilTest(argv[1]); return 0;}
http://www.yutouwan.com/news/37904/

相关文章:

  • 企业营销网站模板免费下载wordpress 标题 插件
  • 网站外网访问怎么做路由器端口映射网站建设首选玖艺建站信得过
  • 网站设计与建设第一章建设商务网站目的
  • 西安网站开发服务多少钱wordpress 点击导航链接老是跳转到当前页面
  • 黄骅市做网站价格长宁建设机械网站
  • wordpress 网站优化优秀企业vi设计案例
  • 建设h网站风险大吗wordpress开发手册chm
  • 郑州品牌网站建设官网界面设计与制作主要学什么
  • 装饰网站模板下载网站制作现状解决方案
  • 龙华做棋牌网站建设哪家便宜网页设计与网站开发项目
  • 如何将别人的网站作为自己的长沙哪里学网站建设
  • 桐乡市建设局网站大通酩悦网站建网站建设网页
  • 基于php的网站开发设计竞价推广代理
  • 北京企业网站seo平台确山专业网站建设
  • 做网站运维永康做网站的公司
  • 济南软件网站建设找工程项目上哪个平台好呢
  • 淮安市哪里可以做网站沧州百度建设网站
  • iis6添加网站asp三层架构做网站
  • 做网站排名优化的公司肇东网站建设云聚达
  • 山西建设执业资格注册管理中心网站html5网页制作教学反思
  • 潍坊做网站个人工作室网站优化方案模板
  • 用asp做网站的流程湖北省住房与城乡建设部网站
  • 企业网站建设资金预算表购物网站开发的背景与意义
  • 建设网站要求哪里备案免费漫画网站
  • 做采集网站赚钱wordpress 删除数据库文件
  • 做网站的旅行社seo外链软件
  • 网站建设毕业设计总结设计上海2019
  • 宝塔可以做二级域名网站么做怎么样的网站好
  • soho外贸建站自建网络商城
  • 门户网站设计欣赏金华网站建设建设设计网站