2017-03-31 26 views
1

我檢查:文件的NodeJS是正確

var fs = require("fs"); 
console.log(process.cwd()); 

var file="C:\\Users\\Usr1\\Documents\\Node\\Test1\\input.txt"; 

if(!fs.existsSync(file)) { 
    console.log("File not found"); 
} 

的路徑是正確的,文件不存在。如果我輸出file,它也顯示正確的路徑。我是NodeJS的新手,無法弄清楚發生了什麼。誰能幫忙?

+0

我不是在UNIX – ElenaDBA

+0

你可以向我們顯示你的'file'和'process.cwd()'的輸出? – sadmicrowave

+0

請嘗試'/'和/或閱讀這個=> https://shapeshed.com/writing-cross-platform-node/ – Hogan

回答

0

首先。從fs.existsSync()man pages

使用fs.exists()調用fs.open()之前檢查文件是否存在,fs.readFile()或不推薦fs.writeFile()。這樣做會引入爭用條件,因爲其他進程可能會更改兩個調用之間的文件狀態。相反,用戶代碼應直接打開/讀取/寫入文件,並處理文件不存在時引發的錯誤。

所以,如果你太重寫你的邏輯,同時建議考慮在內,並加入了一下path模塊邏輯@Hogan建議的:

var fs = require("fs"); 
var path = require('path'); 

console.log(process.cwd()); // C:\Users\Usr1\Documents\Node\Test1 

var file="C:\\Users\\Usr1\\Documents\\Node\\Test1\\input.txt"; 

fs.open(path.normalize(file), 'rx', function(err, fd){ 
    if (err) console.log(err); // consoling the actual error may help in troubleshooting what the issue is... 

    // do something now... 
}); 
+0

process.cwd()和'file'分別解析爲 'C:\ Users \ Usr1 \ Documents \ Node \ Test1'和 'C:\ Users \ Usr1 \ Documents \ Node \ Test1 \ input.txt' – ElenaDBA

+0

Try用你當前工作目錄的相對路徑替換你的文件路徑:'var file ='。\ input.txt'' – sadmicrowave

+0

此外,我更新了我的帖子,在'fs.open中添加了'console.log(err)' ()'回調。這將安慰您看到的錯誤。請粘貼返回的錯誤。 – sadmicrowave

相關問題