public static KeyValue LoadAsBinary(string path) { if (File.Exists(path) == false) { return(null); } try { var input = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); var kv = new KeyValue(); if (kv.ReadAsBinary(input) == false) { return(null); } input.Close(); return(kv); } catch (Exception) { return(null); } }
public static KeyValue LoadAsBinary(string path) { if (!File.Exists(path)) { return((KeyValue)null); } try { FileStream fileStream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); KeyValue keyValue = new KeyValue(); if (!keyValue.ReadAsBinary((Stream)fileStream)) { return((KeyValue)null); } fileStream.Close(); return(keyValue); } catch (Exception ex) { return((KeyValue)null); } }
public bool ReadAsBinary(Stream input) { this.Children = new List <KeyValue>(); try { while (true) { KeyValueType keyValueType = (KeyValueType)input.ReadValueU8(); if (keyValueType != KeyValueType.End) { KeyValue keyValue = new KeyValue(); keyValue.Type = keyValueType; keyValue.Name = input.ReadStringUTF8Z(); switch (keyValueType) { case KeyValueType.None: keyValue.ReadAsBinary(input); break; case KeyValueType.String: keyValue.Valid = true; keyValue.Value = (object)input.ReadStringUTF8Z(); break; case KeyValueType.Int32: keyValue.Valid = true; keyValue.Value = (object)input.ReadValueS32(); break; case KeyValueType.Float32: keyValue.Valid = true; keyValue.Value = (object)input.ReadValueF32(); break; case KeyValueType.Pointer: keyValue.Valid = true; keyValue.Value = (object)input.ReadValueU32(); break; case KeyValueType.WideString: goto label_5; case KeyValueType.Color: keyValue.Valid = true; keyValue.Value = (object)input.ReadValueU32(); break; case KeyValueType.UInt64: keyValue.Valid = true; keyValue.Value = (object)input.ReadValueU64(); break; default: goto label_11; } if (input.Position < input.Length) { this.Children.Add(keyValue); } else { goto label_13; } } else { goto label_15; } } label_5: throw new FormatException("wstring is unsupported"); label_11: throw new FormatException(); label_13: throw new FormatException(); label_15: this.Valid = true; return(input.Position == input.Length); } catch (Exception ex) { return(false); } }
public bool ReadAsBinary(Stream input) { this.Children = new List <KeyValue>(); try { while (true) { var type = (KeyValueType)input.ReadValueU8(); if (type == KeyValueType.End) { break; } var current = new KeyValue { Type = type, Name = input.ReadStringUnicode(), }; switch (type) { case KeyValueType.None: { current.ReadAsBinary(input); break; } case KeyValueType.String: { current.Valid = true; current.Value = input.ReadStringUnicode(); break; } case KeyValueType.WideString: { throw new FormatException("wstring is unsupported"); } case KeyValueType.Int32: { current.Valid = true; current.Value = input.ReadValueS32(); break; } case KeyValueType.UInt64: { current.Valid = true; current.Value = input.ReadValueU64(); break; } case KeyValueType.Float32: { current.Valid = true; current.Value = input.ReadValueF32(); break; } case KeyValueType.Color: { current.Valid = true; current.Value = input.ReadValueU32(); break; } case KeyValueType.Pointer: { current.Valid = true; current.Value = input.ReadValueU32(); break; } default: { throw new FormatException(); } } if (input.Position >= input.Length) { throw new FormatException(); } this.Children.Add(current); } this.Valid = true; return(input.Position == input.Length); } catch (Exception) { return(false); } }