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

专业做能源招聘的网站浙江省建设工程质监站网站

专业做能源招聘的网站,浙江省建设工程质监站网站,wordpress网站出现域名加两个双引号的图片死链接,搜索最全的搜索引擎目录 一、读取文件的字符串行 二、避免读取写入同一文件 三、使用内存映射随机访问文件 四、过去 24 小时内修改过的文件名 五、查找给定路径的循环 六、递归查找重名文件 七、使用给定断言递归查找所有文件 八、跳过隐藏文件遍历目录 九、在给定深度的目录#xff0…        目录 一、读取文件的字符串行 二、避免读取写入同一文件 三、使用内存映射随机访问文件 四、过去 24 小时内修改过的文件名 五、查找给定路径的循环 六、递归查找重名文件 七、使用给定断言递归查找所有文件 八、跳过隐藏文件遍历目录 九、在给定深度的目录递归计算文件大小 十、递归查找所有 png 文件 十一、忽略文件名大小写使用给定模式查找所有文件 本文将介绍Rust的文件系统涵盖文件读写、目录遍历并给出代码示例。 一、读取文件的字符串行 我们向文件写入三行信息然后使用 BufRead::lines 创建的迭代器 Lines 读取文件一次读回一行。File 模块实现了提供 BufReader 结构体的 Read trait。File::create 打开文件 File 进行写入File::open 则进行读取代码如下 use std::fs::File; use std::io::{Write, BufReader, BufRead, Error};fn main() - Result(), Error {let path lines.txt;let mut output File::create(path)?;write!(output, out)?;let input File::open(path)?;let buffered BufReader::new(input);for line in buffered.lines() {println!({}, line?);}Ok(()) } 二、避免读取写入同一文件 对文件使用 same_file::Handle 结构体可以测试文件句柄是否等同。在本实例中将对要读取和写入的文件句柄进行相等性测试。 use same_file::Handle; use std::fs::File; use std::io::{BufRead, BufReader, Error, ErrorKind}; use std::path::Path;fn main() - Result(), Error {let path_to_read Path::new(new.txt);let stdout_handle Handle::stdout()?;let handle Handle::from_path(path_to_read)?;if stdout_handle handle {return Err(Error::new(ErrorKind::Other,You are reading and writing to the same file,));} else {let file File::open(path_to_read)?;let file BufReader::new(file);for (num, line) in file.lines().enumerate() {println!({} : {}, num, line?.to_uppercase());}}Ok(()) } 三、使用内存映射随机访问文件 使用 memmap 创建文件的内存映射并模拟文件的一些非序列读取。使用内存映射意味着您仅需索引一个切片而不是使用 seek 方法来导航整个文件。 Mmap::map 函数假定内存映射后的文件没有被另一个进程同时更改否则会出现竞态条件。 use memmap::Mmap; use std::fs::File; use std::io::{Write, Error};fn main() - Result(), Error {write!(File::create(content.txt)?, My hovercraft is full of eels!)?;let file File::open(content.txt)?;let map unsafe { Mmap::map(file)? };let random_indexes [0, 1, 2, 19, 22, 10, 11, 29];assert_eq!(map[3..13], bhovercraft);let random_bytes: Vecu8 random_indexes.iter().map(|idx| map[idx]).collect();assert_eq!(random_bytes[..], bMy loaf!);Ok(()) } 四、过去 24 小时内修改过的文件名 通过调用 env::current_dir 获取当前工作目录然后通过 fs::read_dir 读取目录中的每个条目通过 DirEntry::path 提取条目路径以及通过通过 fs::Metadata 获取条目元数据。Metadata::modified 返回条目自上次更改以来的运行时间 SystemTime::elapsed。Duration::as_secs 将时间转换为秒并与 24 小时24 * 60 * 60 秒进行比较。Metadata::is_file 用于筛选出目录。 use error_chain::error_chain;use std::{env, fs};error_chain! {foreign_links {Io(std::io::Error);SystemTimeError(std::time::SystemTimeError);} }fn main() - Result() {let current_dir env::current_dir()?;println!(Entries modified in the last 24 hours in {:?}:,current_dir);for entry in fs::read_dir(current_dir)? {let entry entry?;let path entry.path();let metadata fs::metadata(path)?;let last_modified metadata.modified()?.elapsed()?.as_secs();if last_modified 24 * 3600 metadata.is_file() {println!(Last modified: {:?} seconds, is read only: {:?}, size: {:?} bytes, filename: {:?},last_modified,metadata.permissions().readonly(),metadata.len(),path.file_name().ok_or(No filename)?);}}Ok(()) } 五、查找给定路径的循环 使用 same_file::is_same_file 检测给定路径的循环。例如可以通过软连接符号链接在 Unix 系统上创建循环 mkdir -p /tmp/foo/bar/baz ln -s /tmp/foo/ /tmp/foo/bar/baz/qux下面的实例将断言存在一个循环。 use std::io; use std::path::{Path, PathBuf}; use same_file::is_same_file;fn contains_loopP: AsRefPath(path: P) - io::ResultOption(PathBuf, PathBuf) {let path path.as_ref();let mut path_buf path.to_path_buf();while path_buf.pop() {if is_same_file(path_buf, path)? {return Ok(Some((path_buf, path.to_path_buf())));} else if let Some(looped_paths) contains_loop(path_buf)? {return Ok(Some(looped_paths));}}return Ok(None); }fn main() {assert_eq!(contains_loop(/tmp/foo/bar/baz/qux/bar/baz).unwrap(),Some((PathBuf::from(/tmp/foo),PathBuf::from(/tmp/foo/bar/baz/qux)))); } 六、递归查找重名文件 在当前目录中递归查找重复的文件名只打印一次。 use std::collections::HashMap; use walkdir::WalkDir;fn main() {let mut filenames HashMap::new();for entry in WalkDir::new(.).into_iter().filter_map(Result::ok).filter(|e| !e.file_type().is_dir()) {let f_name String::from(entry.file_name().to_string_lossy());let counter filenames.entry(f_name.clone()).or_insert(0);*counter 1;if *counter 2 {println!({}, f_name);}} } 七、使用给定断言递归查找所有文件 在当前目录中查找最近一天内修改的 JSON 文件。使用 follow_links 确保软链接符号链接像普通目录和文件一样被按照当前查找规则执行。 use error_chain::error_chain;use walkdir::WalkDir;error_chain! {foreign_links {WalkDir(walkdir::Error);Io(std::io::Error);SystemTime(std::time::SystemTimeError);} }fn main() - Result() {for entry in WalkDir::new(.).follow_links(true).into_iter().filter_map(|e| e.ok()) {let f_name entry.file_name().to_string_lossy();let sec entry.metadata()?.modified()?;if f_name.ends_with(.json) sec.elapsed()?.as_secs() 86400 {println!({}, f_name);}}Ok(()) } 八、跳过隐藏文件遍历目录 递归下行到子目录的过程中使用 filter_entry 对目录中的条目传递 is_not_hidden 断言从而跳过隐藏的文件和目录。Iterator::filter 可应用到要检索的任何目录 WalkDir::DirEntry即使父目录是隐藏目录。 根目录 . 的检索结果通过在断言 is_not_hidden 中使用 WalkDir::depth 参数生成。 use walkdir::{DirEntry, WalkDir};fn is_not_hidden(entry: DirEntry) - bool {entry.file_name().to_str().map(|s| entry.depth() 0 || !s.starts_with(.)).unwrap_or(false) }fn main() {WalkDir::new(.).into_iter().filter_entry(|e| is_not_hidden(e)).filter_map(|v| v.ok()).for_each(|x| println!({}, x.path().display())); } 九、在给定深度的目录递归计算文件大小 通过 WalkDir::min_depth 和 WalkDir::max_depth 方法可以灵活设置目录的递归深度。下面的实例计算了 3 层子文件夹深度的所有文件的大小总和计算中忽略根文件夹中的文件。 use walkdir::WalkDir;fn main() {let total_size WalkDir::new(.).min_depth(1).max_depth(3).into_iter().filter_map(|entry| entry.ok()).filter_map(|entry| entry.metadata().ok()).filter(|metadata| metadata.is_file()).fold(0, |acc, m| acc m.len());println!(Total size: {} bytes., total_size); } 十、递归查找所有 png 文件 在路径任意部分使用 ** 模式例如/media/**/*.png 匹配 media 及其子目录中的所有 PNG 文件。 use error_chain::error_chain;use glob::glob;error_chain! {foreign_links {Glob(glob::GlobError);Pattern(glob::PatternError);} }fn main() - Result() {for entry in glob(**/*.png)? {println!({}, entry?.display());}Ok(()) } 十一、忽略文件名大小写使用给定模式查找所有文件 在 /media/ 目录中查找与正则表达模式 img_[0-9]*.png 匹配的所有图像文件。 一个自定义 MatchOptions 结构体被传递给 glob_with 函数使全局命令模式下不区分大小写同时保持其它选项的默认值 Default。 注glob 是 glob command 的简写。在 shell 里面用 * 等匹配模式来匹配文件如ls src/*.rs。 use error_chain::error_chain; use glob::{glob_with, MatchOptions};error_chain! {foreign_links {Glob(glob::GlobError);Pattern(glob::PatternError);} }fn main() - Result() {let options MatchOptions {case_sensitive: false,..Default::default()};for entry in glob_with(/media/img_[0-9]*.png, options)? {println!({}, entry?.display());}Ok(()) }
http://www.dnsts.com.cn/news/165494.html

相关文章:

  • 秦皇岛住房建设网站国内新闻最新消息今天简短
  • asp本地网站无法打开长春房产网官网
  • 湖北网站定制开发价格表电子网站建设前台设计
  • 东坑网站建设公司深圳网站设..
  • 家纺营销型网站黄山网站建设jidela
  • 加强网站队伍建设自助企业建站模板
  • 旅游便宜网站建设wordpress虚拟资源交易平台
  • 做网站需要数据库么18款禁用软件app网站入口
  • 株洲网站建设哪家好企业招聘广告模板
  • 电子商务网站建设调查报告房地产销售政策
  • 教育网站开发公司企业做网站都购买域名吗
  • 网站背景图片优化wordpress适配手机端
  • 玉器珠宝做网站潜江做网站的公司
  • 手机端网站首页怎么做北京道路建设在什么网站查询
  • 哪个网站做飞机订单做得比较好的公司网站
  • 企业建设网站的步骤是什么网站怎么做mip技术
  • 建设大厦网站家居网站建设行业现状
  • 国外高校实验室网站建设成果深圳网站设计公司在哪里
  • 滁州建设网站百度网站v认证
  • 纯html网站开发工具高端网站建设注意
  • 网站都有什么功能河北建设工程信息网计算机辅助系统
  • 巨野县城乡和住房建设局网站网站业务员怎么给客户做方案
  • 微信视频网站怎么做的好处百度公司地址
  • 上海建设银行网站家里的网络用哪个公司
  • 杭州文化传媒类高端网站建设公司客户管理系统 软件
  • 做网站首选智投未来1做孵化的网站
  • 公司制作一个网站网站做下子压缩文件的链接
  • 菏泽住房和城乡建设部网站wordpress插件排列
  • 男女之间做那个的网站wordpress分类目录和标签的作用
  • 360网站名片怎么做网页游戏知乎