【问题标题】:FileStream Exception文件流异常
【发布时间】: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


【解决方案1】:

我猜这是因为您使用的是 UTF-8,而 NTFS 使用了其他东西,因此出现了无效字符错误。我会尝试使用另一种编码。

查看这篇 SO 帖子:What encoding are filenames in NTFS stored as?

【讨论】:

  • 字符串文件名 = Encoding.Default.GetString(bFileName); //不工作
  • 我在想 Encoding.Unicode,因为上面的帖子似乎表明操作系统使用它。
  • Encoding.Unicode.GetString(bFileName) 究竟返回了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2014-08-16
相关资源
最近更新 更多