本文的目的是介绍.net和Windows中的.dat*文件名处理的详细情况,特别关注.net在哪个文件夹的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解.net和Wi
本文的目的是介绍.net和Windows中的.dat *文件名处理的详细情况,特别关注.net在哪个文件夹的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解.net和Windows中的.dat *文件名处理的机会,同时也不会遗漏关于.NET Core中的跨平台文件名处理、.net – ListBox边距在Windows 7和Windows 8中是不一样的、.net – 在Windows CE 6.0和Windows Mobile 6.1下开发的权衡是什么、.net – 如何异步打开Windows中的文件的知识。
本文目录一览:- .net和Windows中的.dat *文件名处理(.net在哪个文件夹)
- .NET Core中的跨平台文件名处理
- .net – ListBox边距在Windows 7和Windows 8中是不一样的
- .net – 在Windows CE 6.0和Windows Mobile 6.1下开发的权衡是什么
- .net – 如何异步打开Windows中的文件
.net和Windows中的.dat *文件名处理(.net在哪个文件夹)
在解决性能问题的同时,我遇到了Windows 8中与包含.dat的文件名有关的问题(例如file.dat,file.data.txt)。
我发现它需要6倍以上的时间来创build任何其他扩展名的文件。
在Windows资源pipe理器中,复制包含.dat *文件的文件夹时,会花费相当长的时间。
我已经创build了一些示例代码来说明问题。
“最大的自由区域”性能计数器?
如何强制Windows重新连接到networking驱动器
事件日志,P字段中的.NET运行时错误
如何获得当前Windows用户的*networking身份,而不是他们的交互式login身份?
如何远程启动不同系统上的应用程序?
internal class DatExtnIssue { internal static void Run() { CreateFiles("txt"); CreateFiles("dat"); CreateFiles("dat2"); CreateFiles("doc"); } internal static void CreateFiles(string extension) { var folder = Path.Combine(@"c:tempFileTests",extension); if (!Directory.Exists(folder)) Directory.CreateDirectory(folder); var sw = new Stopwatch(); sw.Start(); for (var n = 0; n < 500; n++) { var fileName = Path.Combine(folder,string.Format("File-{0:0000}.{1}",n,extension)); using (var fileStream = File.Create(fileName)) { // Left empty to show the problem is due to creation alone // Same issue occurs regardless of writing,closing or flushing } } sw.Stop(); Console.WriteLine(".{0} = {1,6:0.000}secs",extension,sw.ElapsedMilliseconds/1000.0); } }
使用以下扩展名创build500个文件的结果
.txt = 0.847secs .dat = 5.200secs .dat2 = 5.493secs .doc = 0.806secs
我得到了类似的结果使用:
using (var fileStream = new FileStream(fileName,FileMode.Create,FileAccess.Write,FileShare.None)) { }
和:
File.WriteallText(fileName,"a");
这导致了一个问题,因为我有一个批处理应用程序运行时间太长。 我终于追查到这一点。
有谁知道为什么会发生这种情况? 这是由devise? 我希望不会,因为它可能会导致高容量应用程序创build.dat文件的问题。
这可能是在我的电脑上的东西,但我已经检查了Windowsregistry,发现没有不寻常的扩展设置。
Process.Start()在Windows 2012 R2上不起作用
计划基于sql表时间戳的.exe执行
允许Windows使用未经validation的发布者执行应用程序
如何在.NET中提示Internet代理的默认Windows凭据对话框窗体?
强制Windows在closures时等待服务停止
如果一切都失败了,试试一下:
将所有文件写为.txt,然后将* .txt重命名为.dat。 也许它会更快:)
.NET Core中的跨平台文件名处理
如何以System.IO
跨平台方式处理类中的文件名,以使其在Windows和Linux上都能正常工作?
例如,我编写了在Windows上可以完美运行的代码,但是在Ubuntu Linux上却没有创建文件:
var tempFilename = $@"..\Data\uploads\{filename}";using (FileStream fs = System.IO.File.Create(tempFilename)){ file.CopyTo(fs); fs.Flush(); }
答案1
小编典典Windows使用反斜杠。Linux使用Slash。Path.Combine设置正确的符号:
Path.Combine方法-MSDN
.net – ListBox边距在Windows 7和Windows 8中是不一样的
你知道为什么是这样,怎么解决呢?
提前致谢.
<ListView.Resources> <Style targettype="ListViewItem"> <Setter Property="Margin" Value="0"/> <Setter Property="Padding" Value="0"/> <Setter Property="BorderThickness" Value="0"/> </Style> </ListView.Resources>
.net – 在Windows CE 6.0和Windows Mobile 6.1下开发的权衡是什么
我正在考虑使用的设备是带有激光扫描仪,WiFi和彩色触摸屏的摩托罗拉MC3100移动计算机.我可以选择使用Windows CE 6.0或Windows Mobile 6.1获取设备.
在做出这个决定时我应该考虑哪些因素?
哪个更容易为用户?
哪个会有更好的开发/调试/配置堆栈?
解决方法
除非你特别需要WinMo,否则一定要使用通用的Windows CE.这样你就不必一直对抗WinMo shell和平台.让CE设备自我行动当然更容易.
.net – 如何异步打开Windows中的文件
这实际上是一个潜在的问题,是否可以异步打开.NET中的文件(因为无法等待FileStream ctor).但如果在操作系统中无法做到这一点,问题就毫无意义.
解决方法
IRP_MJ_CREATE
,系统也会在这种情况下等待,直到驱动程序完成IRP,然后才能从其中一个create / open文件函数返回控制权.
只有当我们处于内核模式时,才有可能,如果您自己格式化IRP_MJ_CREATE
并将其发送给驱动程序.但即使在这种情况下,驱动程序几乎总是同步处理IRP_MJ_CREATE
.
对于API是异步的 – 必须以某种方式在操作完成时通知调用者
windows使用了3种方法
>参数中的一些回调例程,通常是APC(PIO_APC_ROUTINE)
操作完成时调用
>参数中的一些事件,当操作完成时,事件设置在
信号状态.
在api调用中使用的>文件句柄被绑定用于某些IOCP.什么时候
操作完成的数据包排队到IOCP. (我们稍后通过调用GetQueuedCompletionStatus
(ZwRemoveIoCompletion)或KeRemoveQueue
删除此数据包
3)在我们的情况下是不可能的,因为文件句柄还没有创建,所以它不能绑定到任何IOCP.关于1)和2)让我们查找文件open / create api签名:
在用户模式下,打开/创建文件的最低级别api是ZwOpenFile
和ZwCreateFile
. CreateFile
是ZwCreateFile上的shell.在内核模式下NtOpenFile – > NtCreateFile – > IoCreateFile
– > IoCreateFileEx
even – IoCreateFileEx
(创建文件的最低级api) – 没有Event或[Apc]回调参数 – 所以不是异步的. IoCreateFileEx
调用ObOpenObjectByName(未记录,但导出例程) – 这里也没有1)或2)参数 – 再次这是设计api同步
今天关于.net和Windows中的.dat *文件名处理和.net在哪个文件夹的分享就到这里,希望大家有所收获,若想了解更多关于.NET Core中的跨平台文件名处理、.net – ListBox边距在Windows 7和Windows 8中是不一样的、.net – 在Windows CE 6.0和Windows Mobile 6.1下开发的权衡是什么、.net – 如何异步打开Windows中的文件等相关知识,可以在本站进行查询。
本文标签: