const fs = require('fs').promises;
const path = require('path');
async function moveFile() {
const sourceFile = 'source/file.txt';
const targetDir = 'destination';
const targetFile = path.join(targetDir, 'file.txt');
try {
await fs.access(sourceFile);
await fs.mkdir(targetDir, { recursive: true });
await fs.rename(sourceFile, targetFile);
console.log('File moved successfully');
} catch (err) {
if (err.code === 'ENOENT') {
console.log('Source file does not exist');
} else if (err.code === 'EXDEV') {
console.log('Cross-device move detected, using copy+delete fallback');
await moveAcrossDevices(sourceFile, targetFile);
} else {
console.error('Error moving file:', err);
}
}
}
async function moveAcrossDevices(source, target) {
try {
await fs.copyFile(source, target);
await fs.unlink(source);
console.log('File moved across devices successfully');
} catch (err) {
try { await fs.unlink(target); } catch (e) {}
throw err;
}
}
moveFile();