public AmfFile(string path) : base(AmfTypes.Array) { FilePath = path; Name = Path.GetFileNameWithoutExtension(FilePath); Date = File.GetLastWriteTime(path); try { using (var stream = File.OpenRead(path)) { using (var reader = new AmfReader(stream)) { string name; SerializationFormat format; reader.Run(this, out name, out format); Format = format; Name = name; } } } // All exceptions need to be handled as the general case, since corrupt // saves can also cause exceptions (e.g. InvalidCastException), however, // we will flag permission and IO issues for consumers like FileManager catch (Exception e) { AmfFileError.Error type = AmfFileError.Error.Unknown; if (e is SecurityException || e is UnauthorizedAccessException) type = AmfFileError.Error.NoPermission; else if (e is IOException) type = AmfFileError.Error.Unreadable; Error = new AmfFileError(type, e.ToString()); } }
public AmfFile(string path) : base(AmfTypes.Array) { FilePath = path; Name = Path.GetFileNameWithoutExtension(FilePath); Date = File.GetLastWriteTime(path); try { using (var stream = File.OpenRead(path)) { using (var reader = new AmfReader(stream)) { reader.Run(this, out string name, out SerializationFormat format); Format = format; Name = name; } } } // All exceptions need to be handled as the general case, since corrupt // saves can also cause exceptions (e.g. InvalidCastException), however, // we will flag permission and IO issues for consumers like FileManager catch (Exception e) { AmfFileError.Error type = AmfFileError.Error.Unknown; if (e is SecurityException || e is UnauthorizedAccessException) { type = AmfFileError.Error.NoPermission; } else if (e is IOException) { type = AmfFileError.Error.Unreadable; } Error = new AmfFileError(type, e.ToString()); } }