前言
不知道是不是百度雲PC端的bug,最近使用百度雲PC端下載文件時,發現下載的文件中,幾乎每個文件都重複了一個,看着文件也挺多的,挨個刪除是不可能的(也想偷懶一下啊哈哈哈),所以就想用Node.js進行處理了。
注:以下文件截圖都是例子,真實的文件比這還要多得多。
Github
【Duplicate_Files_Handler】: https://github.com/facccccer/Duplicate_Files_Handler.git.
項目文件都上傳到Github了,覺得有幫助的可以看看。
思路
- Node.js 知識
- fs.existsSync():如果路徑存在,則返回 true,否則返回 false。
- fs.stat():獲取文件信息
- stats.isFile():判斷是否爲文件類型
- fs.unlink():刪除文件
- fs.appendFile():異步地將數據追加到文件,如果文件尚不存在則創建該文件。 data 可以是字符串或 Buffer。
- fs.readdir():讀取文件目錄
- 遞歸算法:
由於文件都在不同的文件夾中,文件夾中又有文件夾…所以這裏採用了遞歸算法。
處理前
處理後
LOG
另外,還可以通過打開log.txt文件查看刪除記錄。
代碼
var fs = require('fs');
var path = require('path');
function deal(path, tagOfRepeatFile) {
if (!fs.existsSync(path)) return;
fs.stat(path, (err, stats) => {
if (err) throw err;
if (stats.isFile()) {
if (path.indexOf(tagOfRepeatFile) != -1) {
fs.unlink(path, err => {
var msg = '< Delete file successful! >';
if (err) {
msg = '< Delete file failed! >';
throw err;
}
fs.appendFile(__dirname + '/log.txt', msg + '\n [path] ' + path + '\n [fileName] ' + path.substring(path.lastIndexOf('/') + 1) + '\n\n', err => {
if (err) throw err;
});
})
}
} else {
fs.readdir(path, (err, fileNames) => {
if (err) throw err;
console.log(fileNames);
fileNames.forEach(fileName => {
deal(filePath = path + '/' + fileName, tagOfRepeatFile);
})
});
}
})
}
var directory = path.join(__dirname, '/test_after');
deal(directory, '(1)');
總結
問題、解決問題的思路、效果截圖和代碼也都上了,相當於做一個筆記吧,總之,程序很有用處啊哈哈哈。
Github: https://github.com/facccccer/Duplicate_Files_Handler.git.