问题标签 [system.io.directory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 当搜索模式包含 3 个字符作为扩展名时,.NET 的 Directory.GetFiles() 中的奇怪功能
我最近遇到了微软的一个奇怪的功能:
假设我们的文件夹c:\tmp123
包含 3 个文件 -
1.txt
2.txtx
3.txtxt
Directory.GetFiles(@"C:\tmp123", "*.txt")
a)在 3 个返回的项目中调用yield。
b)Directory.GetFiles(@"C:\tmp123", "*.txtx")
在 1 个返回的项目中调用 yield。
根据 Microsoft 的说法,这是预期的行为(请参阅MSDN中的注释)。
我的问题是:
为什么微软决定拥有如此奇怪的功能?
我该如何克服这个问题?
即,我如何拥有一个*.txt
仅返回扩展名而不返回*.txtx
,*.txtstarngefunctionality
等的搜索模式?
c# - 通过 C# 更新私有队列上的 MSMQ 权限
我们在生产系统中使用了一些私有 MSMQ 队列。自实施以来,我们不得不使用队列更新一些东西并重新创建它们以使用更新的代码。我们有超过 200 台机器需要这些更新,所以我正在开发一个程序,该程序将通过 SMS 推送来执行此更新。
我注意到的是,唯一可以运行我的程序进行更新的人是最初在该特定机器上设置私有队列的人。由于机器的数量,有多个管理员设置这些队列。
由于并非所有员工都在这里工作,这给我 [我的项目] 带来了问题。权限不允许程序更新我需要的所有内容。我用谷歌搜索并找到了这个链接http://social.msdn.microsoft.com/Forums/hu-HU/msmq/thread/36a3d910-d533-4af3-86dc-498d00c68fef显示了如何通过修改文件来更新权限为每个队列创建。伟大的!当我手动导航到该路径并进行更新时,它可以工作。现在我想通过 SMS 推送以编程方式进行。
尝试从我的程序运行它时,我收到一条错误消息,指出目录不存在“C:\Windows\System32\msmq\storage\lqs”。嗯?当我将该路径输入“开始”->“运行”时,它会很好地显示该文件夹。好吧,中断我的代码的 if (Directory.Exists(path)) 部分肯定会返回错误。如果我删除了 System32 之外的所有文件夹,那么 Directory.Exsts 就可以正常工作。
为什么我的程序无法确定该 msmq 文件夹是否存在?我试过“以管理员身份运行”,它仍然返回错误。我需要做什么才能使该支票发挥作用?
谢谢
编辑:这真的很奇怪,我有一个我编写的 FindAndReplace API,它将接受路径(文件或目录),查找文本,替换文本等。当我从我的 Find And Replace GUI 包装器运行该程序时,它工作得很好。但是当我从我的更新程序中调用这个 API 时,它说该目录不存在。这真的很令人困惑。(我可能应该删除 MSMQ 标记,因为它与我的问题无关......)
c# - c# Directory.GetDirectories 不包括文件夹
我正在尝试遍历“c:\Users”中 Windows 中的用户文件夹列表,但不包括 microsoft 内置用户文件夹,以下是我用来完成此壮举的代码段,但出于某种原因没有按预期工作。
我不确定为什么这不起作用,任何人都可以为我提供一些见解吗?
c# - 数据表中的文件名 - 第一列
有没有办法在不使用循环的情况下获取FileNames
in a的列表?DataTable
foreach
string - 为什么这段代码两次返回一个值?
我编写了一个代码来复制文件,然后它必须返回复制文件夹的路径,但它返回一个值两次!?
它还显示 MessageBox 两次并执行 SaveData 两次!?
为什么会这样??
这段代码是从这里调用的:
c# - System.IO.FileNotFoundException 当文件存在并授予权限时
System.IO.FileNotFoundException
运行此代码时出现错误。我是否在代码中做了一些严重错误的事情,还是有一些我还没有想到的小事情?
我已确保所有内容都具有权限,并且文件确实存在并且文件类型正确。
c# - 递归文件/文件夹列表循环出
我如何进入递归循环?首先,我想循环出文件夹和文件的列表,当然这些文件应该在它们各自的文件夹中,我将通过 HTML 和 CSS 在网络上显示列表。我有 aList<DirectoryInfo>
和 aList<FileInfo>
用于存储我的文件夹和文件。
我可以像这样在我的视图中做一个基本的 foreach 循环:
这有效,它显示所有文件夹及其各自文件夹中的文件。然而,这里出现的问题是您可能已经猜到的子文件夹。目前所有文件夹都在同一个列表中,包括子文件夹。
我可以做这样的事情
它会将子文件夹放在其父文件夹中,但这显然仅适用于第一层子文件夹,而不适用于子文件夹中的子文件夹。它还会显示这些子文件夹两次,一次在其父文件夹中,一次在主文件夹列表中。
那么问题是,我是否应该进行递归循环以继续将子文件夹及其文件放入子文件夹中,还是应该做某种 LINQ 来预先组合所有内容以使循环更容易?还是有更好的方法来做到这一点?我更喜欢干净的方式,因为我仍然可以控制 HTML/CSS,所以没有使用数据源然后自动创建所有内容的 jQuery 插件或 ASP 控件。
工作解决方案
.net - 为什么 Windows 资源管理器允许创建过长而无法被 Directory.Move 移动的文件夹 - 产生 PathTooLongException?
我可以在 Windows 资源管理器中手动创建一个文件夹,完整路径的长度正好为 247 个字符(不包括斜杠)。据我了解,248 是最大文件夹名称路径限制,包括尾部斜杠。
然后我尝试使用Directory.Move
方法将此文件夹重命名为更短的路径:
这会抛出PathTooLongException
- 说“完全限定的文件名必须少于 260 个字符,并且目录名必须少于 248 个字符”。
我认为这是因为 Directory.Move 附加了一个试验斜杠,然后检查 (path +"\").Length < 248。
具有相同路径的 Directory.Delete 方法不会抛出。
我认为问题是 Windows 资源管理器允许创建这样的文件夹,任何人都可以确认这是错误的 Windows 资源管理器行为还是 Directory.Move 中的错误?
c# - 我们为什么要使用 Directory.GetFiles() 而不是 Directory.EnumerateFiles() 有什么原因吗?
我不确定为什么我们会使用Directory.GetFiles
for ifDirectory.EnumerateFiles
能够做同样的事情,并且您甚至可以在返回找到的整个目录列表之前枚举该列表。
Directory.EnumerateFiles 与 Directory.GetFiles 有什么区别?
为什么,既然EnumerateFiles
可用了,还需要使用GetFiles
吗?