Чтение текстового файла линию за линией и нажатия к массиву в AS3

Класс объекта посылки

    public class Student implements Parcelable {

        int id;
        String name;

        public Student(int id, String name) {
            this.id = id;
            this.name = name;

        }

        public int getId() {
            return id;
        }

        public String getName() {
            return name;
        }


        @Override
        public int describeContents() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public void writeToParcel(Parcel dest, int arg1) {
            // TODO Auto-generated method stub
            dest.writeInt(id);
            dest.writeString(name);
        }

        public Student(Parcel in) {
            id = in.readInt();
            name = in.readString();
        }

        public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() {
            public Student createFromParcel(Parcel in) {
                return new Student(in);
            }

            public Student[] newArray(int size) {
                return new Student[size];
            }
        };
    }

И список

ArrayList<Student> arraylist = new ArrayList<Student>();

Код из Вызова активности

Intent intent = new Intent(this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("mylist", arraylist);
intent.putExtras(bundle);       
this.startActivity(intent);

Код по вызываемой активности

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);   

    Bundle bundle = getIntent().getExtras();
    ArrayList<Student> arraylist = bundle.getParcelableArrayList("mylist");
}
10
задан Jordan.J.D 11 January 2016 в 21:40
поделиться

4 ответа

Может сработать что-то вроде этого:

var myTextLoader:URLLoader = new URLLoader();

myTextLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event):void {
    var myArrayOfLines:Array = e.target.data.split(/\n/);
}

myTextLoader.load(new URLRequest("myText.txt"));

Массив в функции onLoaded будет содержать ваш массив элементов.

Edit- for весело, я запустил код с образцом файла, и он отлично сработал.

27
ответ дан 3 December 2019 в 14:11
поделиться

Вот пример загрузки и чтения файлов различных типов с помощью ActionScript 3:

      import flash.filesystem.FileMode;
      import flash.filesystem.FileStream;
      import flash.filesystem.File;

      var myFile:File = File.appResourceDirectory; // Create out file object and tell our File Object where to look for the file
      myFile = myFile.resolve("mySampleFile.txt"); // Point it to an actual file

      var fileStream:FileStream = new FileStream(); // Create our file stream
      fileStream.open(myFile, FileMode.READ);

      var fileContents:String = fileStream.readUTFBytes(fileStream.bytesAvailable); // Read the contens of the 
      fileContents_txt.text = fileContents; // Display the contents. I've created a TextArea on the stage for display

      fileStream.close(); // Clean up and close the file stream

После чтения строки вы можете использовать int.valueOf () для преобразования строки в целое число.

7
ответ дан 3 December 2019 в 14:11
поделиться

хммм, действительно немного странно использовать пробел в качестве разделителя. Я имею в виду, вы могли бы сделать это так:

var result:Array = [];
for each (var s:String in source.split(" ")) {
     var a:Array = s.split("=");
     result[a[0]] = a[1];
}

все же полагаться на "" для разделения, на самом деле не такая уж хорошая идея, разве вы не можете использовать JSON, CSV или XML?

1
ответ дан 3 December 2019 в 14:11
поделиться

Это будет работать для небольших файлов, а не для огромных файлов, таких как файлы журналов брандмауэра или веб-сервера.

Эти файлы вообще не загружаются в память полностью.

Есть ли какой-либо решение для 1 / читайте файл, пока не дойдете до конца строки char, 2 / обрабатывать прочитанное, 3 /, а затем продолжить до следующего конца строки / конца файла char?

Я думаю, что можно было бы использовать файловый поток, читающий по 1 байту за раз и проверяя, содержит ли он символ новой строки, и помещая это байтовое содержимое в array, пока вы не столкнетесь с символом EOL, но я (пока) недостаточно силен в AS, чтобы написать что-то подобное, не потеряв 3 месяца моей жизни ... плюс я не слишком уверен в скорости процесса.

Кто-нибудь? Я бы предпочел не задавать отдельный вопрос, поскольку это, по сути, то же требование, но для файлов большего размера ...

1
ответ дан 3 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: