function fileSplit(inputFile, splitSize, outPath, ext) {
let i = 0
function copy(start, end, size) {
return new Promise((resolve, reject) => {
if (start >= size) {
resolve()
} else {
if (end > size - 1) { end = size - 1 }
const readStream = fs.createReadStream(inputFile, { start, end })
let data = Buffer.from([])
readStream.on('data', chunk => {
data = Buffer.concat([data, chunk])
})
readStream.on('end', async () => {
fs.writeFile(path.join(outPath, `split${i + 1}${ext}`), data, async err => {
if (err) { reject(err) }
i++
start = end + 1
end = end + splitSize
await copy(start, end, size)
resolve()
})
})
readStream.on('err', err => {
reject(err)
})
}
})
}
return new Promise((resolve, reject) => {
return fs.stat(inputFile, async (err, stat) => {
if (err) { return reject(err) }
const size = stat.size
await copy(0, splitSize - 1, size)
resolve(i)
})
})
}
fileSplit(path.join(__dirname, './test.mp4'), 1024 * 1024, __dirname, '.mp4').then(i => {
console.log(i)
}).catch(err => {
console.log(err)
})
nodejs把文件按字节分割
最新推荐文章于 2025-02-26 10:33:36 发布