GVKun编程网logo

.net和Windows中的.dat *文件名处理(.net在哪个文件夹)

13

本文的目的是介绍.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和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中的跨平台文件名处理

.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中是不一样的

.net – ListBox边距在Windows 7和Windows 8中是不一样的

我已经设计了一个 WPF ListBox.我在 Windows 8下开发.安装后的样式如下(见图),当我在Windows 7中测试应用程序时,边距不一样.在imagen中可以看到,节点之间的距离在Windows 8中为1px,Windows 7中为0 px.

你知道为什么是这样,怎么解决呢?

提前致谢.

我实际上设法摆脱它自己,它看起来像是ListViewItem样式正在被Windows8改变,添加到ListView的本地资源的样式已经为我工作了.
<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下开发的权衡是什么

.net – 在Windows CE 6.0和Windows Mobile 6.1下开发的权衡是什么

我有一个 Windows .NET应用程序,我计划“移植”并定制到移动设备.该应用程序由一个独立的.NET程序组成,该程序与条形码扫描器配合使用,具有简单的UI并将扫描记录到文件中.还有一个Windows服务使用Web服务(专有同步协议)将数据同步到服务器.内存/磁盘/网络要求相当小.我们没有现有的WinCE或WinMo代码库,也不需要在设备上使用其他应用程序.

我正在考虑使用的设备是带有激光扫描仪,WiFi和彩色触摸屏的摩托罗拉MC3100移动计算机.我可以选择使用Windows CE 6.0或Windows Mobile 6.1获取设备.

在做出这个决定时我应该考虑哪些因素?
哪个更容易为用户?
哪个会有更好的开发/调试/配置堆栈?

解决方法

WinMo是一个基于CE的平台.基本上它是一个新的shell和一些“特殊”API(没有一个你不能没有WinMo,所以它不是真正的魔术). WinMo有一组定义的应用程序,库等,因此它更加标准化,如果你想在多个设备上运行你的应用程序,那么你可能会受益(但在这种特殊情况下,我怀疑它会给你带来多少收获).

除非你特别需要WinMo,否则一定要使用通用的Windows CE.这样你就不必一直对抗WinMo shell和平台.让CE设备自我行动当然更容易.

.net – 如何异步打开Windows中的文件

.net – 如何异步打开Windows中的文件

有没有办法在 Windows中异步打开文件? CreateFile API函数只有FILE_FLAG_OVERLAPPED,允许进一步的异步读写.尽管如此,文件的打开似乎是同步的.鉴于,它必须访问文件系统(并可能执行昂贵的IO操作),它可能是一个潜在的阻止程序.

这实际上是一个潜在的问题,是否可以异步打开.NET中的文件(因为无法等待FileStream ctor).但如果在操作系统中无法做到这一点,问题就毫无意义.

解决方法

不幸的是,在用户模式下无法异步创建/打开文件.即使驱动程序返回STATUS_PENDING为 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是ZwOpenFileZwCreateFile. 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中的文件等相关知识,可以在本站进行查询。

本文标签: