钛金属创建图像文件:file.write(blob)未创建正确的文件。

5

我正在尝试使用Titanium 1.8.1读取一个PNG文件,以下是我的代码:

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。

如果我们使用简单的文本文件作为输入并尝试创建重复的输出文件,则相同的代码可以正常工作。

2个回答

1

您不需要使用read()函数,可以像这样操作:

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

0

在你完成写入后,需要关闭文件。

test.close();

1
嗨,bsavas,test是一个布尔值而不是文件对象。并且Titanium没有名为close的文件对象方法。 - vaibhav
我明白了。抱歉,我以为它是文件流。也许你应该尝试使用FileStream对象。http://developer.appcelerator.com/blog/2011/05/titanium-mobile-intro-series-streams.html - bsavas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接