示例#1
0
        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]);
        }
示例#2
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]);
 }