js实现的文件操作类封装,100个实例
- 创建文件夹
javascriptfunction createFolder(folderPath) {
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath);
}
}
- 删除文件夹
javascriptfunction deleteFolder(folderPath) {
if (fs.existsSync(folderPath)) {
fs.readdirSync(folderPath).forEach(function(file) {
var curPath = folderPath + "/" + file;
if (fs.lstatSync(curPath).isDirectory()) {
deleteFolder(curPath);
} else {
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(folderPath);
}
}
- 读取文件
javascriptfunction readFile(filePath) {
return fs.readFileSync(filePath, "utf-8");
}
- 写入文件
javascriptfunction writeFile(filePath, data) {
fs.writeFileSync(filePath, data);
}
- 追加文件
javascriptfunction appendFile(filePath, data) {
fs.appendFileSync(filePath, data);
}
- 重命名文件
javascriptfunction renameFile(oldFilePath, newFilePath) {
fs.renameSync(oldFilePath, newFilePath);
}
- 删除文件
javascriptfunction deleteFile(filePath) {
fs.unlinkSync(filePath);
}
- 复制文件
javascriptfunction copyFile(sourceFilePath, targetFilePath) {
fs.copyFileSync(sourceFilePath, targetFilePath);
}
- 判断文件是否存在
javascriptfunction fileExists(filePath) {
return fs.existsSync(filePath);
}
- 获取文件信息
javascriptfunction getFileInfo(filePath) {
return fs.statSync(filePath);
}
- 获取文件大小
javascriptfunction getFileSize(filePath) {
return getFileInfo(filePath).size;
}
- 获取文件创建时间
javascriptfunction getFileCreateTime(filePath) {
return getFileInfo(filePath).birthtime;
}
- 获取文件修改时间
javascriptfunction getFileModifyTime(filePath) {
return getFileInfo(filePath).mtime;
}
- 获取文件访问时间
javascriptfunction getFileAccessTime(filePath) {
return getFileInfo(filePath).atime;
}
- 获取文件扩展名
javascriptfunction getFileExtension(filePath) {
return path.extname(filePath);
}
- 获取文件名
javascriptfunction getFileName(filePath) {
return path.basename(filePath);
}
- 获取文件所在目录
javascriptfunction getFileDir(filePath) {
return path.dirname(filePath);
}
- 获取目录下所有文件
javascriptfunction getFilesInFolder(folderPath) {
return fs.readdirSync(folderPath);
}
- 获取目录下所有文件(包括子目录)
javascriptfunction getAllFilesInFolder(folderPath) {
var files = [];
fs.readdirSync(folderPath).forEach(function(file) {
var curPath = folderPath + "/" + file;
if (fs.lstatSync(curPath).isDirectory()) {
files = files.concat(getAllFilesInFolder(curPath));
} else {
files.push(curPath);
}
});
return files;
}
- 获取目录下所有子目录
javascriptfunction getSubFoldersInFolder(folderPath) {
var folders = [];
fs.readdirSync(folderPath).forEach(function(file) {
var curPath = folderPath + "/" + file;
if (fs.lstatSync(curPath).isDirectory()) {
folders.push(curPath);
folders = folders.concat(getSubFoldersInFolder(curPath));
}
});
return folders;
}
- 获取文件内容行数
javascriptfunction getFileLineCount(filePath) {
return readFile(filePath).split("\n").length;
}
- 获取文件内容单词数
javascriptfunction getFileWordCount(filePath) {
return readFile(filePath).split(/\W+/).length;
}
- 获取文件内容字符数
javascriptfunction getFileCharCount(filePath) {
return readFile(filePath).length;
}
- 判断文件是否为空
javascriptfunction isFileEmpty(filePath) {
return getFileCharCount(filePath) === 0;
}
- 判断文件是否为图片
javascriptfunction isImageFile(filePath) {
var ext = getFileExtension(filePath).toLowerCase();
return ext === ".jpg" || ext === ".jpeg" || ext === ".png" || ext === ".gif";
}
- 判断文件是否为文本文件
javascriptfunction isTextFile(filePath) {
var ext = getFileExtension(filePath).toLowerCase();
return ext === ".txt" || ext === ".md" || ext === ".html" || ext === ".css" || ext === ".js";
}
- 判断文件是否为可执行文件
javascriptfunction isExecutableFile(filePath) {
var ext = getFileExtension(filePath).toLowerCase();
return ext === ".exe" || ext === ".sh" || ext === ".bat";
}
- 获取文件内容(逐行处理)
javascriptfunction getFileContent(filePath, lineHandler) {
var content = readFile(filePath);
content.split("\n").forEach(lineHandler);
}
- 获取文件内容(逐个字符处理)
javascriptfunction getFileContent(filePath, charHandler) {
var content = readFile(filePath);
for (var i = 0; i < content.length; i++) {
charHandler(content.charAt(i));
}
}
- 获取文件内容(逐个单词处理)
javascriptfunction getFileContent(filePath, wordHandler) {
var content = readFile(filePath);
content.split(/\W+/).forEach(wordHandler);
}
- 获取文件内容(按指定分隔符处理)
javascriptfunction getFileContent(filePath, separator, handler) {
var content = readFile(filePath);
content.split(separator).forEach(handler);
}
- 获取文件内容(转换为JSON对象)
javascriptfunction getFileContentAsJson(filePath) {
return JSON.parse(readFile(filePath));
}
- 获取文件内容(转换为XML对象)
javascriptfunction getFileContentAsXml(filePath) {
return new DOMParser().parseFromString(readFile(filePath), "text/xml");
}
- 获取文件内容(转换为HTML对象)
javascriptfunction getFileContentAsHtml(filePath) {
return new DOMParser().parseFromString(readFile(filePath), "text/html");
}
- 获取文件内容(转换为Markdown对象)
javascriptfunction getFileContentAsMarkdown(filePath) {
return marked(readFile(filePath));
}
- 获取文件内容(转换为PDF)
javascriptfunction getFileContentAsPdf(filePath, pdfPath) {
var pdf = require("html-pdf");
var html = getFileContentAsHtml(filePath);
pdf.create(html).toFile(pdfPath, function(err, res) {
if (err) return console.log(err);
console.log(res);
});
}
- 获取文件内容(转换为图片)
javascriptfunction getFileContentAsImage(filePath, imagePath) {
var Canvas = require("canvas");
var Image = Canvas.Image;
var canvas = new Canvas(200, 200);
var ctx = canvas.getContext("2d");
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0);
fs.writeFileSync(imagePath, canvas.toBuffer());
};
img.src = readFile(filePath);
}
- 获取文件内容(转换为音频)
javascriptfunction getFileContentAsAudio(filePath, audioPath) {
var ffmpeg = require("ffmpeg");
try {
var video = new ffmpeg(filePath);
video.fnExtractSoundToMP3(audioPath, function(error, file) {
if (!error) {
console.log("Audio file: " + file);
} else {
console.log("Error: " + error);
}
});
} catch (e) {
console.log(e);
}
}
- 获取文件内容(转换为视频)
javascriptfunction getFileContentAsVideo(filePath, videoPath) {
var ffmpeg = require("ffmpeg");
try {
var video = new ffmpeg(filePath);
video.fnExtractSoundToMP3(videoPath, function(error, file) {
if (!error) {
console.log("Video file: " + file);
} else {
console.log("Error: " + error);
}
});
} catch (e) {
console.log(e);
}
}
- 获取文件内容(转换为压缩文件)
javascriptfunction getFileContentAsZip(filePath, zipPath) {
var archiver = require("archiver");
var output = fs.createWriteStream(zipPath);
var archive = archiver("zip", {
zlib: { level: 9 }
});
output.on("close", function() {
console.log("Zip file: " + archive.pointer() + " total bytes");
});
archive.on("error", function(err) {
throw err;
});
archive.pipe(output);
archive.append(readFile(filePath), { name: getFileName(filePath) });
archive.finalize();
}
- 获取文件内容(转换为Excel文件)
javascriptfunction getFileContentAsExcel(filePath, excelPath) {
var XLSX = require("xlsx");
var workbook = XLSX.readFile(filePath);
XLSX.writeFile(workbook, excelPath);
}
- 获取文件内容(转换为Word文件)
javascriptfunction getFileContentAsWord(filePath, wordPath) {
var mammoth = require("mammoth");
mammoth.convertToHtml({ path: filePath }).then(function(result) {
var html = result.value;
var messages = result.messages;
fs.writeFileSync(wordPath, html);
});
}
- 获取文件内容(转换为PowerPoint文件)
javascriptfunction getFileContentAsPowerPoint(filePath, pptPath) {
var PptxGenJS = require("pptxgenjs");
var pptx = new PptxGenJS();
pptx.addSlide();
pptx.save(pptPath);
}
- 获取文件内容(转换为PDF表格)
javascriptfunction getFileContentAsPdfTable(filePath, pdfPath) {
var pdfmake = require("pdfmake");
var content = readFile(filePath);
var docDefinition = {
content: [
{
layout: "lightHorizontalLines", // optional
table: {
headerRows: 1,
widths: ["*", "auto", 100, "*"],
body: [
["First", "Second", "Third", "The last one"],
["Value 1", "Value 2", "Value 3", "Value 4"],
["Val 1", "Val 2", "Val 3", "Val 4"],
["Val 1", "Val 2", "Val 3", "Val 4"]
]
}
}
]
};
var pdfDoc = pdfmake.createPdf(docDefinition);
pdfDoc.getBase64(function(data) {
fs.writeFileSync(pdfPath, data, "base64");
});
}
- 获取文件内容(转换为HTML表格)
javascriptfunction getFileContentAsHtmlTable(filePath, htmlPath) {
var content = readFile(filePath);
var table = "<table>\n";
var rows = content.split("\n");
for (var i = 0; i < rows.length; i++) {
table += " <tr>\n";
var cells = rows[i].split(",");
for (var j = 0; j < cells.length; j++) {
table += " <td>" + cells[j] + "</td>\n";
}
table += " </tr>\n";
}
table += "</table>";
fs.writeFileSync(htmlPath, table);
}
- 获取文件内容(转换为JSON表格)
javascriptfunction getFileContentAsJsonTable(filePath, jsonPath) {
var content = readFile(filePath);
var rows = content.split("\n");
var keys = rows[0].split(",");
var table = [];
for (var i = 1; i < rows.length; i++) {
var cells = rows[i].split(",");
var row = {};
for (var j = 0; j < cells.length; j++) {
row[keys[j]] = cells[j];
}
table.push(row);
}
fs.writeFileSync(jsonPath, JSON.stringify(table));
}
- 获取文件内容(转换为Markdown表格)
javascriptfunction getFileContentAsMarkdownTable(filePath, markdownPath) {
var content = readFile(filePath);
var rows = content.split("\n");
var keys = rows[0].split(",");
var table = "| " + keys.join(" | ") + " |\n";
table += "| " + keys.map(function() { return "---"; }).join(" | ") + " |\n";
for (var i = 1; i < rows.length; i++) {
var cells = rows[i].split(",");
table += "| " + cells.join(" | ") + " |\n";
}
fs.writeFileSync(markdownPath, table);
}
- 获取文件内容(转换为PDF图表)
javascriptfunction getFileContentAsPdfChart(filePath, pdfPath) {
var pdfmake = require("pdfmake");
var content = readFile(filePath);
var docDefinition = {
content: [
{
chart: {
type: "bar",
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [
{
label: "# of Votes",
data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 206, 86, 0.2)",
"rgba(75, 192, 192, 0.2)",
"rgba(153, 102, 255, 0.2)",
"rgba(255, 159, 64, 0.2)"
],
borderColor: [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 206, 86, 1)",
"rgba(75, 192, 192, 1)",
"rgba(153, 102, 255, 1)",
"rgba(255, 159, 64, 1)"
],
borderWidth: 1
}
]
},
options: {
scales: {
yAxes: [
{
ticks: {
beginAtZero: true
}
}
]
}
}
}
}
]
};
var pdfDoc = pdfmake.createPdf(docDefinition);
pdfDoc.getBase64(function(data) {
fs.writeFileSync(pdfPath, data, "base64");
});
}
- 获取文件内容(转换为HTML图表)
javascriptfunction getFileContentAsHtmlChart(filePath, htmlPath) {
var content = readFile(filePath);
var chart = "<canvas id=\"myChart\"></canvas>";
chart += "<script>";
chart += "var ctx = document.getElementById(\"myChart\").getContext(\"2d\");";
chart += "var myChart = new Chart(ctx, {";
chart += " type: \"bar\",";
chart += " data: {";
chart += " labels: [\"Red\", \"Blue\", \"Yellow\", \"Green\", \"Purple\", \"Orange\"],";
chart += " datasets: [{";
chart += " label: \"# of Votes\",";
chart += " data: [12, 19, 3, 5, 2, 3],";
chart += " backgroundColor: [";
chart += " \"rgba(255, 99, 132, 0.2)\",";
chart += " \"rgba(54, 162, 235, 0.2)\",";
chart += " \"rgba(255, 206, 86, 0.2)\",";
chart += " \"rgba(75, 192, 192, 0.2)\",";
chart += " \"rgba(153, 102, 255, 0.2)\",";
chart += " \"rgba(255, 159, 64, 0.2)\"";
chart += " ],";
chart += " borderColor: [";
chart += " \"rgba(255, 99, 132, 1)\",";
chart += " \"rgba(54, 162, 235, 1)\",";
chart += " \"rgba(255, 206, 86, 1)\",";
chart += " \"rgba(75, 192, 192, 1)\",";
chart += " \"rgba(153, 102, 255, 1)\",";
chart += " \"rgba(255, 159, 64, 1)\"";
chart += " ],";
chart += " borderWidth: 1";
chart += " }]";
chart += " },";
chart += " options: {";
chart += " scales: {";
chart += " yAxes: [{";
chart += " ticks: {";
chart += " beginAtZero: true";
chart += " }";
chart += " }]";
chart += " }";
chart += " }";
chart += "});";
chart += "</script>";
fs.writeFileSync(htmlPath, chart);
}
- 创建文件夹:
class FileManager {
static createFolder(path) {
if (!fs.existsSync(path)) {
fs.mkdirSync(path);
console.log(`Folder ${path} created successfully`);
} else {
console.log(`Folder ${path} already exists`);
}
}
}
- 创建文件:
class FileManager {
static createFile(path, content) {
fs.writeFileSync(path, content);
console.log(`File ${path} created successfully`);
}
}
- 读取文件:
class FileManager {
static readFile(path) {
const content = fs.readFileSync(path, "utf8");
console.log(`File ${path} read successfully`);
return content;
}
}
- 写入文件:
class FileManager {
static writeFile(path, content) {
fs.writeFileSync(path, content);
console.log(`File ${path} written successfully`);
}
}
- 追加文件:
class FileManager {
static appendFile(path, content) {
fs.appendFileSync(path, content);
console.log(`File ${path} appended successfully`);
}
}
- 删除文件:
class FileManager {
static deleteFile(path) {
if (fs.existsSync(path)) {
fs.unlinkSync(path);
console.log(`File ${path} deleted successfully`);
} else {
console.log(`File ${path} does not exist`);
}
}
}
- 复制文件:
class FileManager {
static copyFile(sourcePath, destinationPath) {
fs.copyFileSync(sourcePath, destinationPath);
console.log(`File ${sourcePath} copied to ${destinationPath} successfully`);
}
}
- 移动文件:
class FileManager {
static moveFile(sourcePath, destinationPath) {
fs.renameSync(sourcePath, destinationPath);
console.log(`File ${sourcePath} moved to ${destinationPath} successfully`);
}
}
- 重命名文件:
class FileManager {
static renameFile(path, newName) {
const newPath = path.replace(/[^\/]+$/, newName);
fs.renameSync(path, newPath);
console.log(`File ${path} renamed to ${newName} successfully`);
}
}
- 获取文件信息:
class FileManager {
static getFileInfo(path) {
const stats = fs.statSync(path);
console.log(`File ${path} info:`, stats);
return stats;
}
}
- 判断文件是否存在:
class FileManager {
static fileExists(path) {
return fs.existsSync(path);
}
}
- 创建临时文件:
class FileManager {
static createTempFile() {
const tempFilePath = path.join(os.tmpdir(), `${Date.now()}.txt`);
fs.writeFileSync(tempFilePath, "");
console.log(`Temporary file ${tempFilePath} created successfully`);
return tempFilePath;
}
}
- 创建临时文件夹:
class FileManager {
static createTempFolder() {
const tempFolderPath = fs.mkdtempSync(path.join(os.tmpdir(), "temp-"));
console.log(`Temporary folder ${tempFolderPath} created successfully`);
return tempFolderPath;
}
}
- 获取文件扩展名:
class FileManager {
static getFileExtension(path) {
const extension = path.split(".").pop();
console.log(`File ${path} extension: ${extension}`);
return extension;
}
}
- 获取文件名:
class FileManager {
static getFileName(path) {
const fileName = path.split("/").pop();
console.log(`File ${path} name: ${fileName}`);
return fileName;
}
}
- 获取文件夹名:
class FileManager {
static getFolderName(path) {
const folderName = path.split("/").slice(-2, -1)[0];
console.log(`Folder ${path} name: ${folderName}`);
return folderName;
}
}
- 获取文件路径:
class FileManager {
static getFilePath(path) {
console.log(`File path: ${path}`);
return path;
}
}
- 获取文件夹路径:
class FileManager {
static getFolderPath(path) {
const folderPath = path.split("/").slice(0, -1).join("/");
console.log(`Folder path: ${folderPath}`);
return folderPath;
}
}
- 获取文件大小:
class FileManager {
static getFileSize(path) {
const stats = fs.statSync(path);
const fileSizeInBytes = stats.size;
console.log(`File ${path} size: ${fileSizeInBytes} bytes`);
return fileSizeInBytes;
}
}
- 获取文件修改日期:
class FileManager {
static getFileModificationDate(path) {
const stats = fs.statSync(path);
const modificationDate = stats.mtime;
console.log(`File ${path} modification date: ${modificationDate}`);
return modificationDate;
}
}
- 获取文件访问日期:
class FileManager {
static getFileAccessDate(path) {
const stats = fs.statSync(path);
const accessDate = stats.atime;
console.log(`File ${path} access date: ${accessDate}`);
return accessDate;
}
}
- 获取文件创建日期:
class FileManager {
static getFileCreationDate(path) {
const stats = fs.statSync(path);
const creationDate = stats.birthtime;
console.log(`File ${path} creation date: ${creationDate}`);
return creationDate;
}
}
- 获取文件权限:
class FileManager {
static getFilePermissions(path) {
const stats = fs.statSync(path);
const permissions = stats.mode.toString(8).slice(-3);
console.log(`File ${path} permissions: ${permissions}`);
return permissions;
}
}
- 判断文件是否可读:
class FileManager {
static isFileReadable(path) {
try {
fs.accessSync(path, fs.constants.R_OK);
console.log(`File ${path} is readable`);
return true;
} catch (err) {
console.log(`File ${path} is not readable`);
return false;
}
}
}
- 判断文件是否可写:
class FileManager {
static isFileWritable(path) {
try {
fs.accessSync(path, fs.constants.W_OK);
console.log(`File ${path} is writable`);
return true;
} catch (err) {
console.log(`File ${path} is not writable`);
return false;
}
}
}
- 判断文件是否可执行:
class FileManager {
static isFileExecutable(path) {
try {
fs.accessSync(path, fs.constants.X_OK);
console.log(`File ${path} is executable`);
return true;
} catch (err) {
console.log(`File ${path} is not executable`);
return false;
}
}
}
- 判断文件是否是目录:
class FileManager {
static isDirectory(path) {
const stats = fs.statSync(path);
const isDirectory = stats.isDirectory();
console.log(`Path ${path} is a directory: ${isDirectory}`);
return isDirectory;
}
}
- 判断文件是否是文件:
class FileManager {
static isFile(path) {
const stats = fs.statSync(path);
const isFile = stats.isFile();
console.log(`Path ${path} is a file: ${isFile}`);
return isFile;
}
}
- 列出文件夹下的所有文件和文件夹:
class FileManager {
static listFolderContents(path) {
const contents = fs.readdirSync(path);
console.log(`Contents of folder ${path}:`, contents);
return contents;
}
}
- 列出文件夹下的所有文件:
class FileManager {
static listFiles(path) {
const files = fs
.readdirSync(path)
.filter((file) => fs.statSync(path + "/" + file).isFile());
console.log(`Files in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下的所有文件夹:
class FileManager {
static listFolders(path) {
const folders = fs
.readdirSync(path)
.filter((file) => fs.statSync(path + "/" + file).isDirectory());
console.log(`Folders in folder ${path}:`, folders);
return folders;
}
}
- 列出文件夹下的所有文件和文件夹的详细信息:
class FileManager {
static listFolderContentsDetails(path) {
const contents = fs.readdirSync(path);
const details = contents.map((item) => {
const stats = fs.statSync(path + "/" + item);
return {
name: item,
size: stats.size,
isFile: stats.isFile(),
isDirectory: stats.isDirectory(),
modificationDate: stats.mtime,
accessDate: stats.atime,
creationDate: stats.birthtime,
permissions: stats.mode.toString(8).slice(-3),
};
});
console.log(`Details of contents in folder ${path}:`, details);
return details;
}
}
- 列出文件夹下指定扩展名的文件:
class FileManager {
static listFilesByExtension(path, extension) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
file.split(".").pop() === extension
);
console.log(`Files with extension ${extension} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定前缀的文件:
class FileManager {
static listFilesByPrefix(path, prefix) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
file.startsWith(prefix)
);
console.log(`Files with prefix ${prefix} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定后缀的文件:
class FileManager {
static listFilesBySuffix(path, suffix) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
file.endsWith(suffix)
);
console.log(`Files with suffix ${suffix} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定大小的文件:
class FileManager {
static listFilesBySize(path, size) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
fs.statSync(path + "/" + file).size === size
);
console.log(`Files with size ${size} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定日期之前修改的文件:
class FileManager {
static listFilesModifiedBefore(path, date) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
fs.statSync(path + "/" + file).mtime < date
);
console.log(`Files modified before ${date} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定日期之后修改的文件:
class FileManager {
static listFilesModifiedAfter(path, date) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
fs.statSync(path + "/" + file).mtime > date
);
console.log(`Files modified after ${date} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定日期之前访问的文件:
class FileManager {
static listFilesAccessedBefore(path, date) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
fs.statSync(path + "/" + file).atime < date
);
console.log(`Files accessed before ${date} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定日期之后访问的文件:
class FileManager {
static listFilesAccessedAfter(path, date) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
fs.statSync(path + "/" + file).atime > date
);
console.log(`Files accessed after ${date} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定日期之前创建的文件:
class FileManager {
static listFilesCreatedBefore(path, date) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
fs.statSync(path + "/" + file).birthtime < date
);
console.log(`Files created before ${date} in folder ${path}:`, files);
return files;
}
}
- 列出文件夹下指定日期之后创建的文件:
class FileManager {
static listFilesCreatedAfter(path, date) {
const files = fs
.readdirSync(path)
.filter(
(file) =>
fs.statSync(path + "/" + file).isFile() &&
fs.statSync(path + "/" + file).birthtime > date
);
console.log(`Files created after ${date} in folder ${path}:`, files);
return files;
}
}
- 计算文件夹大小:
class FileManager {
static getFolderSize(path) {
let totalSize = 0;
const contents = fs.readdirSync(path);
contents.forEach((item) => {
const itemPath = path + "/" + item;
const stats = fs.statSync(itemPath);
if (stats.isFile()) {
totalSize += stats.size;
} else if (stats.isDirectory()) {
totalSize += this.getFolderSize(itemPath);
}
});
console.log(`Folder ${path} size: ${totalSize} bytes`);
return totalSize;
}
}
- 计算文件夹中文件数量:
class FileManager {
static countFiles(path) {
const contents = fs.readdirSync(path);
const files = contents.filter(
(item) => fs.statSync(path + "/" + item).isFile()
);
console.log(`Number of files in folder ${path}: ${files.length}`);
return files.length;
}
}
- 计算文件夹中文件夹数量:
class FileManager {
static countFolders(path) {
const contents = fs.readdirSync(path);
const folders = contents.filter(
(item) => fs.statSync(path + "/" + item).isDirectory()
);
console.log(`Number of folders in folder ${path}: ${folders.length}`);
return folders.length;
}
}
- 计算文件夹中指定扩展名的文件数量:
class FileManager {
static countFilesByExtension(path, extension) {
const contents = fs.readdirSync(path);
const files = contents.filter(
(item) =>
fs.statSync(path + "/" + item).isFile() &&
item.split(".").pop() === extension
);
console.log(
`Number of files with extension ${extension} in folder ${path}: ${files.length}`
);
return files.length;
}
}
- 计算文件夹中指定前缀的文件数量:
class FileManager {
static countFilesByPrefix(path, prefix) {
const contents = fs.readdirSync(path);
const files = contents.filter(
(item) =>
fs.statSync(path + "/" + item).isFile() && item.startsWith(prefix)
);
console.log(
`Number of files with prefix ${prefix} in folder ${path}: ${files.length}`
);
return files.length;
}
}
- 计算文件夹中指定后缀的文件数量:
class FileManager {
static countFilesBySuffix(path, suffix) {
const contents = fs.readdirSync(path);
const files = contents.filter(
(item) =>
fs.statSync(path + "/" + item).isFile() && item.endsWith(suffix)
);
console.log(
`Number of files with suffix ${suffix} in folder ${path}: ${files.length}`
);
return files.length;
}
}
- 计算文件夹中指定大小的文件数量:
class FileManager {
static countFilesBySize(path, size) {
const contents = fs.readdirSync(path);
const files = contents.filter(
(item) =>
fs.statSync(path + "/" + item).isFile() &&
fs.statSync(path + "/" + item).size === size
);
console.log(
`Number of files with size ${size} in folder ${path}: ${files.length}`
);
return files.length;
}
}
- 计算文件夹中指定日期之前修改的文件数量:
class FileManager {
static countFilesModifiedBefore(path, date) {
const contents = fs.readdirSync(path);
const files = contents.filter(
(item) =>
fs.statSync(path + "/" + item).isFile() &&
fs.statSync(path + "/" + item).mtime < date
);
console.log(
`Number of files modified before ${date} in folder ${path}: ${files.length}`
);
return files.length;
- 判断文件夹是否存在
Copy
class FileUtil {
static folderExists(path) {
return fs.existsSync(path);
}
}
console.log(FileUtil.folderExists('./myFolder'));
- 获取文件夹名
Copy
class FileUtil {
static getFolderName(path) {
return path.split('/').pop();
}
}
console.log(FileUtil.getFolderName('./myFolder'));
- 获取当前工作目录
Copy
class FileUtil {
static getCurrentDirectory() {
return process.cwd();
}
}
console.log(FileUtil.getCurrentDirectory());
- 改变当前工作目录
Copy
class FileUtil {
static changeCurrentDirectory(path) {
process.chdir(path);
}
}
FileUtil.changeCurrentDirectory('./myFolder');
console.log(FileUtil.getCurrentDirectory());
- 获取文件/文件夹的绝对路径
Copy
class FileUtil {
static getAbsolutePath(path) {
return path.resolve(path);
}
}
console.log(FileUtil.getAbsolutePath('./myFile.txt'));
- 判断路径是否为绝对路径
Copy
class FileUtil {
static isAbsolutePath(path) {
return path.isAbsolute(path);
}
}
console.log(FileUtil.isAbsolutePath('./myFile.txt'));
console.log(FileUtil.isAbsolutePath('/home/user/myFile.txt'));
- 获取路径的目录名
Copy
class FileUtil {
static getDirectoryName(path) {
return path.dirname(path);
}
}
console.log(FileUtil.getDirectoryName('/home/user/myFile.txt'));
- 获取路径的文件名(带扩展名)
Copy
class FileUtil {
static getBaseName(path) {
return path.basename(path);
}
}
console.log(FileUtil.getBaseName('/home/user/myFile.txt'));
- 获取路径的文件名(不带扩展名)
Copy
class FileUtil {
static getBaseNameWithoutExtension(path) {
return path.basename(path, path.extname(path));
}
}
console.log(FileUtil.getBaseNameWithoutExtension('/home/user/myFile.txt'));
- 获取路径的扩展名
Copy
class FileUtil {
static getExtensionName(path) {
return path.extname(path);
}
}
console.log(FileUtil.getExtensionName('/home/user/myFile.txt'));
- 获取路径的父级目录
Copy
class FileUtil {
static getParentDirectory(path) {
return path.dirname(path);
}
}
console.log(FileUtil.getParentDirectory('/home/user/myFolder/myFile.txt'));
- 获取路径的相对路径
Copy
class FileUtil {
static getRelativePath(sourcePath, destinationPath) {
return path.relative(sourcePath, destinationPath);
}
}
console.log(FileUtil.getRelativePath('/home/user/myFolder', '/home/user/myFolder/myFile.txt'));
- 检查路径是否为目录
Copy
class FileUtil {
static isDirectory(path) {
return fs.statSync(path).isDirectory();
}
}
console.log(FileUtil.isDirectory('/home/user/myFolder'));
console.log(FileUtil.isDirectory('/home/user/myFile.txt'));
- 检查路径是否为文件
Copy
class FileUtil {
static isFile(path) {
return fs.statSync(path).isFile();
}
}
console.log(FileUtil.isFile('/home/user/myFile.txt'));
console.log(FileUtil.isFile('/home/user/myFolder'));
- 获取路径的绝对路径
Copy
class FileUtil {
static getAbsolutePath(path) {
return path.resolve(path);
}
}
console.log(FileUtil.getAbsolutePath('./myFile.txt'));
console.log(FileUtil.getAbsolutePath('/home/user/myFile.txt'));
- 获取路径的相对路径
Copy
class FileUtil {
static getRelativePath(sourcePath, destinationPath) {
return path.relative(sourcePath, destinationPath);
}
}
console.log(FileUtil.getRelativePath('/home/user/myFolder', '/home/user/myFolder/myFile.txt'));
console.log(FileUtil.getRelativePath('/home/user/myFolder', '/home/user/otherFolder/myFile.txt'));
- 获取路径的绝对路径
Copy
class FileUtil {
static getAbsolutePath(path) {
return path.resolve(path);
}
}
console.log(FileUtil.getAbsolutePath('./myFile.txt'));
console.log(FileUtil.getAbsolutePath('/home/user/myFile.txt'));
- 获取路径的相对路径
Copy
class FileUtil {
static getRelativePath(sourcePath, destinationPath) {
return path.relative(sourcePath, destinationPath);
}
}
console.log(FileUtil.getRelativePath('/home/user/myFolder', '/home/user/myFolder/myFile.txt'));
console.log(FileUtil.getRelativePath('/home/user/myFolder', '/home/user/otherFolder/myFile.txt'));
- 获取路径的扩展名
Copy
class FileUtil {
static getExtensionName(path) {
return path.extname(path);
}
}
console.log(FileUtil.getExtensionName('/home/user/myFile.txt'));
console.log(FileUtil.getExtensionName('/home/user/myFile'));
- 获取路径的文件名(带扩展名)
Copy
class FileUtil {
static getBaseName(path) {
return path.basename(path);
}
}
console.log(FileUtil.getBaseName('/home/user/myFile.txt'));
console.log(FileUtil.getBaseName('/home/user/myFolder/'));