Swift:如何检查文档目录下多个文件是否存在?
批量检查多文件是否存在的实用方案
太懂这种重复写相同代码的烦躁了!每次要检查一堆文件都得复制粘贴单个文件检查的逻辑,确实够繁琐。既然现有的.fileExists()只支持单路径,那我们可以基于它封装一个批量处理的工具函数,一次性搞定整个路径数组。
以Node.js环境为例(异步版本)
如果你的项目用的是Node.js的fs模块,下面这个异步函数可以高效批量检查文件:
const fs = require('fs').promises; async function batchCheckFilesExist(filePaths) { // 并行处理所有路径的检查请求,比串行更快 const checkResults = await Promise.all( filePaths.map(async (filePath) => { try { // 用fs.access替代exists,是官方推荐的检查文件存在的方式 await fs.access(filePath); return { filePath, exists: true }; } catch (err) { return { filePath, exists: false }; } }) ); // 可以按需返回结果,比如直接返回完整列表,或者筛选出缺失的文件 return checkResults; } // 调用示例 const targetFiles = [ './config.json', './logs/app.log', './assets/icon.png' ]; batchCheckFilesExist(targetFiles).then(results => { console.log('所有文件检查结果:', results); // 筛选出不存在的文件 const missingFiles = results.filter(item => !item.exists).map(item => item.filePath); if (missingFiles.length > 0) { console.warn('以下文件未找到:', missingFiles); } });
同步版本(适合简单场景)
如果你的代码是同步执行的,也可以写个同步版本:
const fs = require('fs'); function batchCheckFilesExistSync(filePaths) { return filePaths.map(filePath => { return { filePath, exists: fs.existsSync(filePath) }; }); } // 调用示例 const missingFiles = batchCheckFilesExistSync(targetFiles) .filter(item => !item.exists) .map(item => item.filePath); console.log('缺失文件列表:', missingFiles);
核心思路拆解
- 用数组
map遍历所有待检查路径,把单个文件检查的逻辑复用在每个路径上 - 异步场景下用
Promise.all并行处理所有检查请求,大幅提升效率 - 把结果整理成包含路径和存在状态的对象,方便后续做筛选、提示等操作
这样以后再需要检查多文件,只需要传入路径数组就行,再也不用重复写冗余代码啦!
内容的提问来源于stack exchange,提问作者Jazure
相关产品推荐
相关产品推荐

