【发布时间】:2012-04-18 12:44:21
【问题描述】:
byte[] bFileName = new byte[512];
r2Socket.Receive(bFileName);
String FileName = Encoding.UTF8.GetString(bFileName);
System.Windows.Forms.MessageBox.Show(FileName); // It's Ok. Show FileName = "text.jpg"
FileStream = new FileStream("D:\\" + FileName, FileMode.Create, FileAccess.Write);
FileStream ArgumentException
path 是一个空字符串 (""),只包含空格,或者包含一个或多个无效字符。 -或者- path指的是非文件设备,如NTFS环境下的“con:”、“com1:”、“lpt1:”等。
为什么会这样?谢谢。
==
//CLIENT
byte[] bFileName = new byte[512];
Socket Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket.Connect(textBoxIP.Text, int.Parse(textBoxPORT.Text));
FileInfo sFileInfo = new FileInfo(textBoxFILE.Text);
string FileName = sFileInfo.Name;
bFileName = Encoding.UTF8.GetBytes(FileName);
Socket.Send(bFileName);
//SERVER
Socket rSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress rIPAddress = Dns.GetHostEntry("localhost").AddressList[0];
IPEndPoint rIPEndPoint = new IPEndPoint(IPAddress.Any, int.Parse(textBoxPORT2.Text));
rSocket.Bind(rIPEndPoint);
rSocket.Listen(1);
byte[] bFileName = new byte[512];
r2Socket.Receive(bFileName);
String FileName = Encoding.UTF8.GetString(bFileName);
【问题讨论】:
-
您确定
FileName不为空并且具有有效的 FileName 吗?另外你最好使用Path.Combine()来组合路径而不是使用'+' -
由于您是从套接字读取的,因此我还要确保文件名中没有任何空格字符,这些空格字符在消息框显示中不可见。简单的检查方法是显示文件名和文件名的长度。
-
FileStream = new FileStream(Path.Combine(textBoxPATH.Text, "i.jpg"), FileMode.Create, FileAccess.Write); //这是工作!
-
字符串文件名中的问题 = Encoding.UTF8.GetString(bFileName);
标签: c# filestream argumentexception