2016-11-24 40 views
0

嘗試寫入具有文件名「aux」的路徑時,我很困惑接收到異常。在同一目錄和不同目錄中的其他文件名可以很好地工作,我以前從未遇到過這種麻煩。無法寫入文件名爲「aux」的任何路徑

爲了給你一個想法,考慮這個測試代碼:

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 
一個文件被創建

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"))); 

最後一行打印

替換\\/沒有改變anythi ng(在我所知的Windows上是非標準的)。

我知道aux有特殊的意義在很久以前,但考慮到它只是在文件名(帶或不帶擴展名)發生在一個子目錄,它不應該有關這一點。

+1

爲什麼它與此無關? https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx <「不要使用以下保留名稱作爲文件的名稱:... AUX ...」 – Evk

+1

不是完全重複,儘管嚴格連接。我們正在討論名爲AUX.TXT的文件,而不是名爲AUX的文件夾 – Steve

回答

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 。

相關問題