FileIOException,file.length引发了异常

时间:2012-07-02 18:17:59

标签: c# file-io

我正在使用C#创建一个临时文件。

public partial class frmResults : Form
{
    public static string caseFile = "";

    private void frmResults_Load(object sender, EventArgs e)
    {
        caseFile = CreateTempFiles();
        FileInfo file = new FileInfo(caseFile + ".rpt");

        if (file.Exists)
        {
            try
            {   
                if (fil.Length < 64000000)
                {
                    richTabular.LoadFile(caseFile + ".rpt", RichTextBoxStreamType.PlainText);
                } 
            }
            catch (IOException io)
            {
                MessageBox.Show(io.GetType().Name);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static string CreateTempFiles()
        {
            string sPath;
            caseFile = Path.GetTempFileName();

            sPath = Path.GetTempPath();
            string workDir = sPath + "\\work\\";
            // create work directory
            if (!Directory.Exists(workDir))
            {
                Directory.CreateDirectory(workDir);
            }
            // create temp file name
            int i = 0;
            string tmpfileprefix = workDir + "Rdp";
            string tmpfilename = "";
            do
            {
                i++;
                tmpfilename = tmpfileprefix + i.ToString("D6");
            } while (File.Exists(tmpfilename + ".rpt"));

            caseFile = tmpfilename;
            return caseFile;
        }
    }
}
  

Error:fil.Length = 'fil.Length'抛出'System.IO.FileNotFoundException'类型的例外   找不到文件'C:\Users\sc\AppData\Local\Temp\\work\Rdp000001.rpt'

此外,if (fil.Exists)返回false。

2 个答案:

答案 0 :(得分:2)

错误消息无法更清楚:

  

错误:fil.Length ='fil.Length'引发类型'System.IO.FileNotFoundException'的异常无法找到文件'C:\ Users \ sc \ AppData \ Local \ Temp \ work \ Rdp000001.rpt'

所以...它不是一个有效的File对象,但你调用一个需要它的方法(Length),因此引发了一个异常。您的文件不存在。

答案 1 :(得分:0)

您的CreateTempFiles方法仅将文件名返回到尚未创建的临时文件。没有在该方法中创建文件的位置。此外,在该方法中没有获取现有文件的名称,因此它将始终是一个新文件。但是,如果您确实想要安全,可以在检查其长度的位置添加if(File.Exists(caseFile + ".rpt"))检查。