-3

我正在使用 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。

4

2 回答 2

2

错误信息再清楚不过了:

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

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

于 2012-07-02T18:20:45.650 回答
0

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

于 2012-07-02T18:34:17.690 回答