我很难让我的数组正确保存到文本文件中。文本文件以每行一个条目的方式格式化,因此我使用它:
var newFavString:String = arFavourites.join("\r\n");
favStream.open(favFile, FileMode.WRITE);
favStream.writeUTFBytes(newFavString);
favStream.close();
但是在某个地方,它以某种方式添加了空白行,这可能是由某些数组条目中的空格引起的,但这不应该影响我不认为的加入过程。
我用它来清理数组以防万一,它仍然在跟踪中显示一些未定义的对象:
for (i=0; i<arFavourites.length-1; i++) {
if (arFavourites[i] == undefined) {
arFavourites.splice(i,1);
}
trace(arFavourites[i]);
}
这就是我将数据导入数组的方式:
var favFile:File = File.userDirectory;
favFile = favFile.resolvePath("favourites.txt");
var favStream:FileStream = new FileStream();
var arFavourites = new Array();
var FavCount:int = 0;
favStream.open(favFile, FileMode.READ);
var fileContents:String = favStream.readUTFBytes(favStream.bytesAvailable);
arFavourites = fileContents.split("\r\n");
for (i=0; i<arFavourites.length-1; i++) {
if (arFavourites[i] == undefined) {
arFavourites.splice(i,1);
}
}
favStream.close();
当我删除某些东西时,我会在数组中搜索它并将其拼接出来。也许错误就在那里。
var k:int;
var i:int;
trace("Selected Index: " + dg.selectedIndex);
if (dg.length == 0) {
return;
}
for (k=0; k<dg.length; k++) {
if (dg.isItemSelected(dg.getItemAt(k))) {
for (i=0; i<arFavourites.length; i++) {
if (arFavourites[i] == dg.getItemAt(k)[1]) {
arFavourites.splice(i,1);
}
if (arFavourites[i] == dg.getItemAt(k)[2]) {
arFavourites.splice(i,1);
}
if (arFavourites[i] == dg.getItemAt(k)[3]) {
arFavourites.splice(i,1);
}
if (arFavourites[i] == dg.getItemAt(k)[4]) {
arFavourites.splice(i,1);
}
if (arFavourites[i] == dg.getItemAt(k)[5]) {
arFavourites.splice(i,1);
}
}
dg.removeItemAt(k);
dg.scrollToIndex(k);
dg.clearSelection();
break;
}
}
for (i=0; i<arFavourites.length-1; i++) {
if (arFavourites[i] == undefined) {
arFavourites.splice(i,1);
}
}
var newFavString:String = arFavourites.join("\r\n");
trace(newFavString);
favStream.open(favFile, FileMode.WRITE);
favStream.writeUTFBytes(newFavString);
favStream.close();
当从数组中添加或删除某些内容时,文本文件会更新。我敢肯定它真的很简单,我将不胜感激快速响应=)谢谢