0
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 が空の文字列 ("") であるか、空白のみが含まれているか、1 つ以上の無効な文字が含まれています。- または - 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);
4

1 に答える 1

0

あなたがUTF-8を使用していて、NTFSが別のものを使用しているため、無効な文字エラーが発生したためだと思います。別のエンコーディングを使用してみます。

この SO 投稿をチェックしてください: NTFS のファイル名はどのようなエンコードで保存されますか?

于 2012-04-18T13:11:22.740 に答える