【问题标题】:Empty Path Name Is Not Legal [duplicate]空路径名不合法[重复]
【发布时间】:2025-12-05 20:30:02
【问题描述】:

所以我正在尝试编译 Asteroids 游戏。它几乎可以工作了,所有文件都到位等等......

遇到此代码时会出现问题。

FileStream myFileStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
string myTempFile = @"F:\Documents\Junior School\Computer Programming (Java 1)\AsteroidsWithSound\AsteroidsWithSound\temp\mysound" + i.ToString() + ".wav";

它给了我一个错误/警告,不知道它到底叫什么,但它说

ArgumentException 未处理。 空路径名是不合法的。

我在网上阅读过类似这样的代码块导致此问题,但始终找不到解决方案。任何帮助都会很棒。

编辑:文件名在这个块中定义。

string filename = this.Player.FileName;
this.Player.Open("");
File.Delete(filename);
this.isReady = true;

【问题讨论】:

  • 问题是我正在调用 PlaySound("");当小行星被制造时。我注释掉那行代码并且它有效。尝试播放不存在的文件通常会破坏。

标签: c# filestream argumentexception


【解决方案1】:

这表明filename 变量引用了一个空字符串。

您还没有显示设置filename 值的代码,但这是需要查看的部分。

【讨论】:

  • 这似乎是它定义的地方 string filename = this.Player.FileName; this.Player.Open(""); File.Delete(文件名); this.isReady = true;
  • @Cistoran:好的,那么你需要查看 Player.FileName - 大概 那个 是空的。
  • Player.FileName 甚至不在代码中,除了注释掉的东西。
  • @Cistoran:这可以解释它 - 你认为它会尝试打开什么文件?
【解决方案2】:

首先,尝试看看在文件名上放置 Watch 时会得到什么,然后在抛出异常的行处中断。如果它是空的,那么找出它是什么时候设置为空字符串的,如果它不为空,那么这里出了点问题,它可能是某个地方另一个(邪恶的)代码片段的结果。

接下来,我建议您使用 File.readXXXXX 来读取文件,而不是使用新的 FileStream。 File 类可以很好地处理 open-read-close 过程。

希望对你有帮助

【讨论】: