我想在C#中将目录的全部内容从一个位置复制到另一个位置.
似乎没有办法使用System.IO没有大量递归的类来完成此操作.
VB中有一个方法,如果我们添加一个引用,我们就可以使用它Microsoft.VisualBasic:
new Microsoft.VisualBasic.Devices.Computer().
FileSystem.CopyDirectory( sourceFolder, outputFolder );
Run Code Online (Sandbox Code Playgroud)
这似乎是一个相当丑陋的黑客.有没有更好的办法?
我正在处理一个TreeView目录和文件.用户可以选择文件或目录,然后使用它执行某些操作.这要求我有一个方法,根据用户的选择执行不同的操作.
目前我正在做这样的事情来确定路径是文件还是目录:
bool bIsFile = false;
bool bIsDirectory = false;
try
{
string[] subfolders = Directory.GetDirectories(strFilePath);
bIsDirectory = true;
bIsFile = false;
}
catch(System.IO.IOException)
{
bIsFolder = false;
bIsFile = true;
}
Run Code Online (Sandbox Code Playgroud)
我不禁觉得有更好的方法来做到这一点!我希望找到一个标准的.NET方法来处理这个问题,但我无法做到这一点.是否存在这样的方法,如果不存在,确定路径是文件还是目录的最直接的方法是什么?
想象一下我想创建(或覆盖)以下文件: - C:\Temp\Bar\Foo\Test.txt
使用File.Create(..)方法,这可以做到这一点.
但是,如果我没有以下任何一个文件夹(从该示例路径,上面)
然后我得到一个DirectoryNotFoundException抛出.
那么.. 给定一个路径,我们如何递归创建创建文件所需的所有文件夹..对于该路径? 如果存在Temp或Bar文件夹,但Foo不存在......那么也会创建.
为简单起见,我们假设没有安全问题 - 所有权限都很好,等等.
在许多不同的论坛中已经以各种形式提出了这个问题,但是,恕我直言,我还没有找到一个真正回答清楚的地方,所以我要重新构思并再次提问.
我在一个基本的微软商店工作.我们使用TFS,我们所有的开发人员都有MSDN订阅,包括VS的Team Suite版本.所以我们可以访问MSTest.
我已经阅读了各种NUnit与MSTest的比较,而开发者社区似乎非常注重选择NUnit.但至少对我们的情况来说,给出的理由似乎并不是压倒性的或令人信服的.(NUnit更频繁更新,NUnit更快,NUnit不需要TFS等)
如果我选择的话,我可以使用NUnit,但是必须保护使用没有正式支持的开源软件.我需要一个相当令人信服的理由这样做.
我基本上必须回答的是为了证明使用NUnit优先于MSTest是这样的:在NUnit中我能做些什么,我在MSTest中无法做同样的努力吗?
我正在使用 VS2008 TFS(使用 MSTest)。
我有一个可靠的单元测试,它依赖于项目子文件夹中的数据文件(即 testproject1\TestData)。数据文件属性为 Build Action=Content,Copy Always。(它不是这样的测试数据文件,而是生产代码读取并通常在其自己的文件夹中期望的文件)
当测试构建并执行时,数据文件被正确复制到...\TestResults\(testruniD)\Out 文件夹中,测试代码找到它。
现在,我将测试及其数据文件移动到解决方案中的另一个测试项目(它真正应该在的位置),数据文件位于与新测试项目 (testproject2\TestData) 和数据文件属性相同的文件夹中被检查为仍然如上。但是,在重新构建时,测试在新位置失败,因为数据文件尚未复制到测试结果输出文件夹,因此执行代码无法找到它。
我应该做些什么来确保仍然复制数据文件?
我之前遇到过一个相关的问题,一些数据文件被复制到测试结果输出文件夹,而有些则没有,没有明显的原因,这让我感到困惑。
TIA