配列をテキストファイルに正しく保存するのに苦労しています。テキスト ファイルは 1 行に 1 エントリの形式でフォーマットされているため、これを使用します。
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();
配列に何かが追加または削除されると、テキスト ファイルが更新されます。本当にシンプルなものだと確信しており、迅速な対応に大いに感謝します =) ありがとう