在一个目录中创建文件(FileSystemWatcher_Created)时,我将其复制到另一个目录中.但是当我创建一个大(> 10MB)文件时,它无法复制文件,因为它已经开始复制,当文件尚未完成创建时...
这导致无法复制文件,因为它被另一个进程使用提高.;(
任何帮助?
class Program
{
static void Main(string[] args)
{
string path = @"D:\levan\FolderListenerTest\ListenedFolder";
FileSystemWatcher listener;
listener = new FileSystemWatcher(path);
listener.Created += new FileSystemEventHandler(listener_Created);
listener.EnableRaisingEvents = true;
while (Console.ReadLine() != "exit") ;
}
public static void listener_Created(object sender, FileSystemEventArgs e)
{
Console.WriteLine
(
"File Created:\n"
+ "ChangeType: " + e.ChangeType
+ "\nName: " + e.Name
+ "\nFullPath: " + e.FullPath
);
File.Copy(e.FullPath, @"D:\levan\FolderListenerTest\CopiedFilesFolder\" + e.Name);
Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud) 我遇到了这个测试函数的问题,我在其中获取内存字符串,压缩它并解压缩它.压缩效果很好,但我似乎无法使解压缩工作.
//Compress
System.IO.MemoryStream outStream = new System.IO.MemoryStream();
GZipStream tinyStream = new GZipStream(outStream, CompressionMode.Compress);
mStream.Position = 0;
mStream.CopyTo(tinyStream);
//Decompress
outStream.Position = 0;
GZipStream bigStream = new GZipStream(outStream, CompressionMode.Decompress);
System.IO.MemoryStream bigStreamOut = new System.IO.MemoryStream();
bigStream.CopyTo(bigStreamOut);
//Results:
//bigStreamOut.Length == 0
//outStream.Position == the end of the stream.
Run Code Online (Sandbox Code Playgroud)
我相信bigStream out应该至少包含数据,特别是如果我的源流(outStream)被读取.这是一个MSFT错误还是我的?
我不知道为什么这会抛出错误在解析完成之前遇到的流结束.我查看了这个链接,但没有任何内容解决了我的问题.我使用断点来找到它抛出错误女巫的确切点
Console.WriteLine("Message from client ");
Run Code Online (Sandbox Code Playgroud)
提前致谢
if (stream.DataAvailable)
{
byte[] buffer = new byte[10024];
int byteCount = stream.Read(buffer, 0, buffer.Length);
byte[] inBytes = new byte[byteCount];
for (int counter = 0; counter < byteCount; counter++)
inBytes[counter] = buffer[counter];
BinaryFormatter formatter = new BinaryFormatter();
MemoryStream memory = new MemoryStream();
memory.Write(inBytes,0,inBytes.Length);
object message = (object)formatter.Deserialize(memory);
Console.WriteLine("Message from client ");
memory.Close();
}
Run Code Online (Sandbox Code Playgroud)
编辑*这是我的坏事实际代码没有错,我在客户端犯了错误.我使用Encoding.ASCII而不是二进制格式.