2012-02-21 12 views
5

Tôi đang cố gắng đọc tệp .PNG bằng Titanium 1.8.1 Đây là mã của tôi để đọc tệp.Titanium Tạo tệp hình ảnh: file.write (blob) không tạo đúng tệp

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

Khi tôi tạo tệp mới bằng đối tượng blob ở trên, tệp mới do đó được tạo không giống như tệp gốc. Đây là mã của tôi để tạo tệp mới.

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 được tạo nhưng vấn đề ở đây không phải là tệp hình ảnh hợp lệ. Ngoài ra kích thước của tập tin là khoảng 53 byte, trong khi tập tin đầu vào của tôi là 1kb.

Mã giống nhau hoạt động tốt nếu chúng tôi sử dụng tệp văn bản đơn giản làm đầu vào và cố gắng tạo tệp đầu ra trùng lặp.

Trả lời

0

Bạn cần đóng tệp sau khi bạn viết xong.

test.close(); 
+0

Hi bsavas, kiểm tra là một boolean không nộp đối tượng. cũng Titanium không có phương pháp như vậy gọi là đóng đối tượng tập tin. – vaibhav

+0

Tôi hiểu. Xin lỗi, tôi nghĩ Đó là luồng tệp. Có lẽ bạn nên thử với đối tượng FileStream. http://developer.appcelerator.com/blog/2011/05/titanium-mobile-intro-series-streams.html – bsavas

+0

đã thử, không may mắn :( – vaibhav

1

Bạn không cần phải làm read() làm điều đó như thế này:

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