在Ada中,为什么我尝试打开文件写入失败?

时间:2010-03-10 00:01:42

标签: file-io ada

当我尝试打开要写入的文件时,我得到一个Ada.IO_Exceptions.Name_Error。

文件名是“C:\ CC_TEST_LOG.TXT”。该文件不存在。

这是在NTFS分区上的Windows XP上。用户具有创建和写入目录的权限。 文件名远低于WIN32最大路径长度。

 name_2 : String := "C:\CC_TEST_LOG.TXT"
 if name_2'last > name_2'first then
    begin
       Ada.Text_IO.Create(file, Ada.Text_IO.Out_File, name_2);
       Ada.Text_IO.Put_Line(
          "CC_Test_Utils: LogFile: ERROR: Open, File "
          & name_2);
       return;
    exception
       when The_Error : others =>
          Ada.Text_IO.Put_Line(
             "CC_Test_Utils: LogFile: ERROR: Open Failed; "
              & Ada.Exceptions.Exception_Name(The_Error)
              & ", File " & name_2);
    end;
 end if;

1 个答案:

答案 0 :(得分:1)

脱离我的头顶:

  • 在调用Create时,file尚未与另一个打开的文件相关联吗?
  • 您使用的是什么编译器? Gnat是基于mingw的,可能不喜欢windows“C:\”指示符。尝试取出该部分,看看它是否创建了文件(某处)。
  • 正如Xandy所说,该文件可能已被其他程序打开。 Create调用需要对文件进行独占访问。

顺便说一下,Put_Line在Create之后的重点是什么?由于某种原因成功打开文件也是错误的吗?看起来它可能会产生误导,让人觉得程序在实际成功时无法打开文件。