通过flex中的readBytes函数从特定位置读取

时间:2013-02-12 11:39:03

标签: flex air flex4 flex3 bytearray

我正在尝试对文本文件进行一些操作。我正在做的是:

使用以下代码阅读文件:

var data:ByteArray = new ByteArray();
var inFile:File = File.desktopDirectory;
inFile = inFile.resolvePath('dummy.txt');
var inStream:FileStream = new FileStream();

inStream.open(inFile, FileMode.READ);
inStream.readBytes(data, 0, data.length);
inStream.close();

假设dummy.txt文件的文本为abcdefghi123456789,其数据长度为18个字符。

案例1

如果我想阅读整个文件,我使用此代码

inStream.readBytes(data, 0, data.length);

这会成功返回完整的文件数据。

案例2

我想只读取字符12345并将它们存储在byteArray中,我试图像下面的代码中那样传递offSet

inStream.readBytes(data, 9, 5);

它返回以下数据的错误 -

___12345

这是9个空格,然后是5个字符,理想情况下应该只返回5个字符。

那我怎么能这样做呢。任何示例代码和网站链接都将不胜感激。

1 个答案:

答案 0 :(得分:1)

offset方法的readBytes参数指定输出ByteArray的偏移量,而不是文件。您可以通过设置FileStream属性在position中进行搜索。请尝试以下方法:

inStream.position = 9;
inStream.readBytes(data, 0, 5);