我有一个路径,我需要确定它是一个目录或文件.
这是确定路径是否为文件的最佳方法吗?
string file = @"C:\Test\foo.txt";
bool isFile = !System.IO.Directory.Exists(file) &&
System.IO.File.Exists(file);
Run Code Online (Sandbox Code Playgroud)
对于一个目录,我会颠倒逻辑.
string directory = @"C:\Test";
bool isDirectory = System.IO.Directory.Exists(directory) &&
!System.IO.File.Exists(directory);
Run Code Online (Sandbox Code Playgroud)
如果两者都不存在那么我就不会去任何一个分支.所以假设它们都存在.
我正在做一些速度测试,我注意到Enum.HasFlag比使用按位操作慢大约16倍.
有谁知道Enum.HasFlag的内部以及为什么它如此之慢?我的意思是两倍慢不会太糟糕但是当它慢了16倍时它会使该功能无法使用.
如果有人想知道,这是我用来测试其速度的代码.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace app
{
public class Program
{
[Flags]
public enum Test
{
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8
}
static int num = 0;
static Random rand;
static void Main(string[] args)
{
int seed = (int)DateTime.UtcNow.Ticks;
var st1 = new SpeedTest(delegate
{
Test t = Test.Flag1;
t |= (Test)rand.Next(1, 9);
if (t.HasFlag(Test.Flag4))
num++;
});
var st2 = new SpeedTest(delegate
{
Test t = …Run Code Online (Sandbox Code Playgroud) 在MsTest中,如果我需要来自另一个项目的某个文件进行测试,我可以指定DeploymentItem属性.NUnit中有类似的东西吗?
所以我正在尝试单元测试/集成测试我负责共享目录的代码.
所以我创建了我的共享驱动器,然后检查目录是否存在.首先在本地,然后通过它的共享名称.
Assert.IsTrue(Directory.Exists(testSharePath));
Assert.IsTrue(Directory.Exists(
String.Format(@"\\{0}\{0}", System.Environment:MachineName, testShareName));
Run Code Online (Sandbox Code Playgroud)
在此之后我当然希望通过删除我刚刚创建的目录来清理自己.然而,这不起作用,因为"......它被另一个进程使用."
经过一些实验,我发现如果我删除第二个Assert,它会再次起作用.难道我做错了什么?哦,我也注意到如果我在删除目录之前在那里放了30秒的睡眠它也可以.跆拳道?
编辑:我刚刚重新审视了这个问题并尝试了人们在评论中建议首先明确地取消共享文件夹.就是这样.工作就像一个魅力.
我有一个函数,Path通过确定String Path是a File还是a来自动创建指定的Directory.
通常情况下,我会使用此路径已经exists:
FileAttributes attributes = File.GetAttributes("//Path");
if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
{
Directory.CreateDirectory("//Path");
}
Run Code Online (Sandbox Code Playgroud)
但如果不是呢?如何检查是否String Path是File或Directory如果它不存在呢?
我想要一个正则表达式来匹配一个有效的绝对Windows目录路径,其中目录名称可以包含空格.
示例匹配:
C:\pictures\holiday (without trailing backslash)
C:\pictures\holiday\ (or with trailing backslash)
C:\ pictures\holiday
C:\ pictures\holiday\
C:\pictures \ holiday
C:\pictures \ holiday\
C:\pictures\ holiday \
Run Code Online (Sandbox Code Playgroud)
示例失败:
\pictures\holiday (no relative path allowed)
C:\pictures*\holiday (not a valid directory path)
Run Code Online (Sandbox Code Playgroud)
我试过了,^[a-zA-Z]:(\\\w+)*([\\])?$但这与空格不符.
我也试过^[a-zA-Z]:(\s)*(\\\w+)*(\s)*([\\])?$但是工作不正常.
正则表达式是我的最后手段.我还尝试使用非正则表达式解决方案来验证文本框,就像在这个答案中一样.但我还没有找到适用于空间的方法.
提前致谢!
我让用户将路径作为字符串传递。
一条路径可能是这样的
C:\someFolder
C:\someFolder\someFile
C:\someFolder\someFile.jpg
我想检查给定的路径是文件还是文件夹,如果是文件,我想检查它是否真的存在。
我一直在FileAttributes fileRoot = File.GetAttributes(@path);用来检查它是一个文件还是一个文件夹,但它不能正常工作。