private byte[] Delete(string name) { if (!File.Exists(name)) { string s1 = "SI" + name; var temp1 = Encoding.UTF8.GetBytes(s1); _controlWriter.Write(5 + temp1.Length); _controlWriter.Write((byte)3); _controlWriter.Write(temp1); return(new byte[0]); } if (PathaIDFS.TryRemove(name, out Tuple <byte[], FileStream> tuple)) { tuple.Item2.Dispose(); File.Delete(name); string s1 = "SI" + name; var temp1 = Encoding.UTF8.GetBytes(s1); _controlWriter.Write(5 + temp1.Length); _controlWriter.Write((byte)3); _controlWriter.Write(temp1); return(new byte[0]); } string s2 = "NO" + name; var temp2 = Encoding.UTF8.GetBytes(s2); _controlWriter.Write(5 + temp2.Length); _controlWriter.Write((byte)3); _controlWriter.Write(temp2); return(new byte[0]); }
private byte[] Store(string pathname, int length, byte[] data) { try { var b = pathname.Split('\\'); string directory = b[0]; for (int i = 1; i < b.Length - 1; i++) { directory += @"\" + b[i]; } Directory.CreateDirectory(directory); bool wasdone = false; Tuple <byte[], FileStream> tuple; FileStream fs; if (PathaIDFS.TryGetValue(pathname, out tuple) && Chord.comp.Equals(tuple.Item1, Chord.ID)) { fs = tuple.Item2; wasdone = true; } else { fs = new FileStream(pathname, FileMode.Create, FileAccess.ReadWrite, FileShare.None); } fs.Position = 0; CopyStream(data, fs, length + 5); if (!wasdone) { fs.Dispose(); } string s2 = "SI" + pathname; var temp2 = Encoding.UTF8.GetBytes(s2); _controlWriter.Write(5 + temp2.Length); _controlWriter.Write((byte)3); _controlWriter.Write(temp2); } catch { string s2 = "NO" + pathname; var temp2 = Encoding.UTF8.GetBytes(s2); _controlWriter.Write(5 + temp2.Length); _controlWriter.Write((byte)3); _controlWriter.Write(temp2); } return(new byte[0]); }