我正在尝试做什么,sourcepath是文档的文件路径。 1)测试文件是否存在,如果它没有抛出异常 2)所以现在我们知道文件存在(并且因为文件是从其他地方下载的)检查它是否包含数据。 (因为它不应该是空的),如果它是空的抛出错误,....这将用于检查文件是否为空?
string sourcePath = "C:\Users\Martin\Desktop\document5.docx";
if (!File.Exists(sourcePath))
{
//throw exception
}
if (string.IsNullOrEmpty(sourcePath))
{
//throw exception
}
答案 0 :(得分:4)
您的代码只会检查(a)文件是否存在于磁盘上(不必有任何数据)或(b)路径中是否包含某些内容。
要准确测试文件是否包含数据,您可以使用:
var file = new FileInfo(sourcePath);
if (file.Length == 0)
{
//throw exception
}
此处有更多信息......
http://msdn.microsoft.com/en-us/library/system.io.fileinfo.length(v=vs.110).aspx
顺便说一下,你在第一行声明的路径不起作用。您需要转义字符串才能将其视为有效路径,因此请更改:
string sourcePath = "C:\Users\Martin\Desktop\document5.docx";
到此:
string sourcePath = @"C:\Users\Martin\Desktop\document5.docx";
答案 1 :(得分:0)
鉴于您对数据来源的评论;只需编辑该代码:
// taken from example linked in comment
public long download(string remoteFile, string localFile)
{
long totalBytes = 0;
try
{
// ...blah
try
{
while (bytesRead > 0)
{
localFileStream.Write(byteBuffer, 0, bytesRead);
totalBytes += bytesRead;
bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
}
}
// ...blah
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return totalBytes;
}
并检查是返回零还是非零。此外,这是非常可怕的异常处理(在这里我使用"处理" 非常错误)。
答案 2 :(得分:0)
您可以通过它length
进行检查。
FileInfo fileInfo = new FileInfo(sourcePath);
if (fileInfo.Length > 0)
{
// file has content. file downloaded.
}
else
{
//throw exception
}