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");
}
Может сработать что-то вроде этого:
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 весело, я запустил код с образцом файла, и он отлично сработал.
Вот пример загрузки и чтения файлов различных типов с помощью 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 () для преобразования строки в целое число.
хммм, действительно немного странно использовать пробел в качестве разделителя. Я имею в виду, вы могли бы сделать это так:
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 / читайте файл, пока не дойдете до конца строки char, 2 / обрабатывать прочитанное, 3 /, а затем продолжить до следующего конца строки / конца файла char?
Я думаю, что можно было бы использовать файловый поток, читающий по 1 байту за раз и проверяя, содержит ли он символ новой строки, и помещая это байтовое содержимое в array, пока вы не столкнетесь с символом EOL, но я (пока) недостаточно силен в AS, чтобы написать что-то подобное, не потеряв 3 месяца моей жизни ... плюс я не слишком уверен в скорости процесса.
Кто-нибудь? Я бы предпочел не задавать отдельный вопрос, поскольку это, по сути, то же требование, но для файлов большего размера ...