2013-04-23 67 views
1

我想將一些java文件io代碼移植到dart,但無法獲得任何要讀取的輸入。無法掃描文本文件的內容

我的listen,onDone或onError方法都沒有被調用!

static void dumpFile(String filename) { 
    print("Dumping: $filename Exists: ${new File(filename).existsSync()} Length: ${new File(filename).lengthSync()}"); 
    Stream stream = new File(filename).openRead(); 
    stream 
     .listen(
     (List<int> codes) { 
     print("CODES: $codes"); 
     }, 
     onDone:() {print("Done with file");}, 
     onError: (e) {print(e.toString());} 
    ); 
    print("Dumping done!"); 
    } 

控制檯輸出:

Dumping: /Users/gunnar/git/chessbuddy/src/test/resources/pgn/testgame13.pgn 
Exists: true Length: 565 
Dumping done! 

€鏢--version 飛鏢VM版本:0.4.7.1_r21537(星期二4月16日1時34分53秒2013)

+0

實際發生的情況是程序因主線程中發生錯誤而停止。我的錯! – 2013-04-24 20:26:59

回答

1

你是缺少一個解碼器,如果需要的話還有一個變壓器查看Dart Library Tour(files and directories)瞭解更多信息。我想這只是如果你需要一個可讀的內容供進一步使用。

,也許這將有助於:

static void dumpFile(String filename) { 
    print("Dumping: $filename Exists: ${new File(filename).existsSync()} Length: ${new File(filename).lengthSync()}"); 
    Stream stream = new File(filename).openRead(); 
    stream 
     .transform(new StringDecoder()) 
     .transform(new LineTransformer()) 
     .listen(
     (String codes) { //cast to String 
     print("CODES: $codes"); 
     }, 
     onDone:() {print("Done with file");}, 
     onError: (e) {print(e.toString());} 
    ); 
    print("Dumping done!"); 
    } 
1

隨着飛鏢編輯器版本0.5.0-r21823你的代碼的作品,並顯示以下輸出:

Dumping: test/test.dart Exists: true Length: 519 
Dumping done! 
CODES: [...] 
Done with file 

注意做將傾倒!顯示在之前代碼:[...],因爲File.openRead是異步操作。如果你想要一個同步等價物,你可以使用File.readAsBytesSync