2012-02-21 66 views
5

我想讀取一個.PNG文件使用鈦1.8.1 這裏是我的代碼來讀取文件。鈦創建圖像文件:file.write(blob)不創建正確的文件

var f = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'KS_nav_views.png'); 
var blob = f.read(); 

當我使用上述blob對象創建新文件時,由此創建的新文件與原始文件不同。 這是我創建新文件的代碼。

var outputDir = Titanium.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory,'output'); 
outputDir.createDirectory(); 
var newFile = Titanium.Filesystem.getFile(outputDir.nativePath,'outFile.png'); 
var test = newFile.write(blob); 
if (test === false){ 
     Ti.API.debug("Write Error"); 
} 
Ti.API.debug("Write complete? " + test); 

outFile.png被創建,但問題是它不是一個有效的圖像文件。該文件的大小約爲53字節,而我的輸入文件是1kb。

如果我們使用簡單的文本文件作爲輸入並嘗試創建重複的輸出文件,相同的代碼工作正常。

回答

0

您需要在完成寫作後關閉文件。

test.close(); 
+0

嗨bsavas,測試是一個布爾值而不是文件的對象。另外Titanium沒有這樣的文件對象關閉方法。 – vaibhav 2012-02-23 11:18:45

+0

我明白了。對不起,我認爲這是文件流。也許你應該試試FileStream對象。 http://developer.appcelerator.com/blog/2011/05/titanium-mobile-intro-series-streams.html – bsavas 2012-02-24 09:57:30

+0

嘗試過,沒有運氣:( – vaibhav 2012-02-24 11:42:09

1

你不需要做閱讀()做這樣的:

var t = Titanium.Filesystem.getFile(tempDataDirectory, 'a.json'); 
var o = Titanium.Filesystem.getFile(onlineDataDirectory, 'b.json'); 
o.write(t);