无法使用文件名" aux"写入任何路径

时间:2016-11-24 20:48:08

标签: c# .net windows file

我在尝试写入具有文件名" aux"的路径时感到困惑。同一个和不同目录中的其他文件名工作得很好,我之前从未遇到过这种麻烦。

为了给你一个想法,请考虑以下测试代码:

<h3 class="nav-toggle icon">
  <a href="#navigation">
    <?php _e( 'Navigation', 'woothemes' ); ?>
  </a>
  <a href="http://hobbymedia.net">
    <img src="http://hobbymedia.net/wp-content/uploads/2016/11/logo3-mobilex2.png" alt="" width="200" height="38" />
  </a>
</h3>

最后一行打印出一个文件:

Directory.CreateDirectory ("D:\\asdf"); // OK
File.WriteAllText ("D:\\asdf\\aux_", ""); // OK
try {
    File.WriteAllText ("D:\\asdf\\aux.txt", ""); // fails
}
catch (ArgumentException ex) {
    Console.WriteLine (ex);
}
try {
    File.WriteAllText ("D:\\asdf\\aux", ""); // fails
}
catch (ArgumentException ex) {
    Console.WriteLine (ex);
}
Console.WriteLine (string.Join ("\n", Directory.EnumerateFiles ("D:\\asdf")));

抛出两个相同的异常:

D:\asdf\aux_

System.ArgumentException: FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use of "\\.\" in the path. at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost) at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost) at System.IO.File.InternalWriteAllText(String path, String contents, Encoding encoding, Boolean checkHost) at Program.Main(String[] args) in C:\...\Program.cs:line 24 替换\\没有改变任何内容(据我所知,在Windows上是非标准的)。

我很久以前就知道/有一个特殊含义,但考虑到它只发生在子目录中的文件名(有或没有扩展名)中,它不是假设的< / em>与此相关。

1 个答案:

答案 0 :(得分:0)

AUX是文件的保留名称。它在Naming Files, Paths, and Namespaces的MSDN上有记录,他们说:

  

不要将以下保留名称用于文件名:CON,   PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,   LPT1,LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8和LPT9。 也避免   这些名称紧接着是一个延伸;例如,NUL.txt   不推荐。