2012-02-21 8 views
5

Próbuję odczytać plik .PNG przy użyciu Titanium 1.8.1 Oto mój kod do odczytu pliku.Titanium Tworzenie pliku obrazu: file.write (blob) nie tworzenie poprawnego pliku

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

Po utworzeniu nowego pliku przy użyciu powyższego obiektu blob, nowy plik utworzony w ten sposób nie jest taki sam jak oryginalny plik. Oto mój kod, aby utworzyć nowy plik.

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); 

Zostaje utworzony plik outFile.png, ale problem polega na tym, że nie jest to prawidłowy plik obrazu. Również rozmiar pliku wynosi około 53 bajty, podczas gdy mój plik wejściowy to 1kb.

Ten sam kod działa dobrze, jeśli użyjemy prostego pliku tekstowego jako danych wejściowych i spróbujemy utworzyć zduplikowany plik wyjściowy.

Odpowiedz

0

Musisz zamknąć plik po zakończeniu pisania.

test.close(); 
+0

Hi bsavas, test nie jest logiczna pliku obiektu. również tytan nie ma takiej metody zwanej close on file object. – vaibhav

+0

Rozumiem. Przepraszam, myślałem, że to strumień plików. Może powinieneś spróbować z obiektem FileStream. http://developer.appcelerator.com/blog/2011/05/titanium-mobile-intro-series-streams.html – bsavas

+0

próbowałem, bez powodzenia :( – vaibhav

1

Nie trzeba czytać() zrobić to tak:

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