2012-10-01 50 views
2

我想在JavaScript中逐行讀取本地文件。我可以檢查它是否到達這個文件的末尾。例如:JavaScript中的文件結尾

file = new ActiveXObject("Scripting.FileSystemObject"); 

// Sets the variable "f" to equal the new open file contents 

f = file.OpenTextFile("c:\\wantlist.txt", 1); 
s = f.ReadLine() 

While(s != EOF) 
{ 
    //. Do some thing 
    s = f.ReadLine() 
} 

什麼是EOF應該在JavaScript中?或者你有另一種方法來解決這個問題?非常感謝你!

回答

2
+0

只是出於好奇,你有充分的理由選擇版本0.84超過我選擇的.60?這並不重要,但我認爲我會稍微好一會兒。很顯然,OP正在編寫WSH文件,因此可能需要儘可能地提供支持。因爲在腳本語言方面有很少的前向破壞,因此Ergo給予API中最可能的記錄效果最好。 – jcolebrand

+0

我真的剛剛在Google上選擇了AtEndOfStream的第一個結果來獲取MSDN頁面。我沒有真正考慮到我選擇的版本,因爲這樣一個簡單的屬性端口很好。我想,一旦他知道了財產的名稱,他可以在MSDN上選擇適合自己喜歡的API版本,儘管示例代碼可能是相同的。 –

2

你取回一個FileStream對象,所以你要使用返回boolean值的屬性之一做你想要做的,這樣的東西作爲AtEndOfStream

但是,現在我要走出我的肥皂箱,並問你爲什麼要編寫JavaScript的窗口腳本的東西,爲什麼你不選擇使用像PowerShell更現代的東西,其中W生病給你大部分的.NET對象的靈活性,但幾乎所有的BASH腳本語言或其他腳本語言。

然後,您在此嘗試完成的方法將更易於從其他社區成員編寫/使用/獲得支持。

我們不大可能召回窗口的JScript編程的深奧細節(但顯然也有我們幾個老屁仍然存在)

+0

可能你應該做一個完整的工作答案,因爲他使用's = f.ReadLine();''while''但是我認爲它應該是's + = f.ReadLine();' –

+0

爲什麼我會寫一個完整的例子?我想給他最好的答案,專門給他想要的。另外,爲了清楚起見,你在問什麼,他可能試圖讀取所有行,並將它們全部保存在緩衝區中。傳統上,您逐一閱讀每一行,以便您可以在每一行上進行操作。一個例子:一個CSV文件,每行是一條記錄。因此,將兩行或更多行保存在內存中將是緩衝區的重複。我認爲OP對於使用情況是相當具體的。 – jcolebrand