我正在使用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。
答案 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"))
检查。