When a class object is written to the fileStream using the writeObject() method, it is serialized and stored in the AMF (Action Message Format) format. Unless it is explicitly registered, the class instance will be stored as the normal object. If the class type information of the object has to be retained, then it has to be registered using the registerClassAlias method.
The registerClassAlias(…) function retains the class type information of the object, when it is serialized to the AMF format.
During deserialization , the class object can be retrieved as it’s own type using the getClassByAlias method
Here is a simple example of using registerClassAlias() and getClassByAlias();
public class User
{
public var name : String;
public var password : String;
public var userID : String;
}
public class UserFileUtil
{
private var _userDir : File;
public function UserFileUtil()
{
_ userDir = File.documentsDirectory.resolvePath(“userInfoDir”);
if(!_userDir.exists)
{
_userDir.createDirectory();
}
}
public function writeUserDataToFile(userObj : User) : void
{
registerClassAlias(“UserAlias”, User);
var userFile : File = _ userDir.resolvePath(userObj.userID);
var fileStream : FileStream = new FileStream();
if(!userFile.exists)
{
fileStream.open(userFile, FileMode.WRITE);
fileStream.position = 0;
fileStream.writeObject(userObj);
fileStream.close();
}
}
public function readUserFromFile(userID : String) : User
{
getClassByAlias(“UserAlias”);
var userFile : File = _ userDir.resolvePath(userID);
var fileStream : FileStream = new FileStream();
var userObj : User;
if(userFile.exists)
{
fileStream.open(userFile, FileMode.READ);
fileStream.position = 0;
userObj = fileStream.readObject();
fileStream.close();
}
return userObj;
}
}
