问题列表 - 第809页

在C#中预分配文件空间?

我正在创建一个下载应用程序,我希望在它们实际下载之前预先在硬盘上分配文件的空间,因为它们可能相当大,没有人喜欢看到"此驱动器已满,请删除一些文件并再试一次. " 所以,从那个角度来看,我写了这个.

// Quick, and very dirty
System.IO.File.WriteAllBytes(filename, new byte[f.Length]);
Run Code Online (Sandbox Code Playgroud)

它可以工作,至少你下载一个几百MB的文件,甚至可能是GB的文件,如果没有完全消除页面文件并完全杀死你的系统内存,你就会把Windows扔进吵架的狂热中.哎呀.

所以,通过一点启示,我开始使用以下算法.

using (FileStream outFile = System.IO.File.Create(filename))
{
    // 4194304 = 4MB; loops from 1 block in so that we leave the loop one 
    // block short
    byte[] buff = new byte[4194304];
    for (int i = buff.Length; i < f.Length; i += buff.Length)
    {
        outFile.Write(buff, 0, buff.Length);
    }
    outFile.Write(buff, 0, f.Length % buff.Length);
}
Run Code Online (Sandbox Code Playgroud)

这很有效,并且不会遇到最后解决方案的严重内存问题.虽然它仍然很慢,特别是在较旧的硬件上,因为它将数据(可能是GB的)数据输出到磁盘.

问题是:有没有更好的方法来完成同样的事情?有没有办法告诉Windows创建一个x大小的文件,只需在文件系统上分配空间,而不是实际写出一吨数据.我根本不关心初始化文件中的数据(我正在使用的协议 - bittorrent - 为它发送的文件提供哈希值,因此随机未初始化数据的最坏情况是我得到了一个幸运的巧合和部分文件是正确的).

c# file-io file

16
推荐指数
2
解决办法
5151
查看次数

从Windows Installer自定义操作执行脚本文件

我需要在Windows安装程序项目(标准OOTB VS 2008安装程序项目-vdproj)中执行批处理文件作为卸载过程的一部分.无法直接从安装程序项目中的自定义操作执行bat文件,因此我编写了一个快速的vbs脚本来调用所需的bat文件.
vbs代码:

Set WshShell = WScript.CreateObject( "WScript.Shell" )
command = "uninstall-windows-serivce.bat"
msgbox command
WshShell.Run ("cmd /C " & """" & command & """")
Set WshShell = Nothing
Run Code Online (Sandbox Code Playgroud)

当此脚本独立于卸载运行时,它可以完美地运行.但是,当作为卸载的一部分运行时,它不会执行bat文件(但会显示消息框,因此我知道调用了vbs文件).没有报告错误(至少我可以告诉).为什么此脚本不能作为"卸载自定义操作"的一部分工作

vbscript windows-installer visual-studio-2008

5
推荐指数
2
解决办法
2万
查看次数

我应该将东西注入到我的实体中吗?

当使用IoC容器时,向其中注入其他类是否被认为是好的设计?即持久化类

oop

5
推荐指数
1
解决办法
722
查看次数

信息隐藏和属性

信息隐藏是否意味着我应该尽量减少我的课程所拥有的属性数量?是对的吗?您是否倾向于使用方法使您的类成为私有字段?

oop

3
推荐指数
1
解决办法
357
查看次数

Interfaces的概念来自哪里?

在c#中,我们有接口.这些来自哪里?它们在c ++中不存在.

language-agnostic interface

10
推荐指数
2
解决办法
1092
查看次数

如何使用CRC卡精心设计?

我一直想知道人们如何使用CRC(类责任合作)卡.我在书中读到过它们,在互联网上发现了模糊的信息,但从未真正掌握过它.我认为有人应该制作一个显示CRC卡会话的YouTube视频,因为我的一本书描述它很难用文字表达,它应该"由已经掌握它的人教授".可悲的是,我知道周围没有人使用CRC卡,我想了解更多.

UPDATE

任何链接到视频,显示人们用这种技术进行阐述,将不胜感激.

oop ooad crc-cards

29
推荐指数
5
解决办法
4728
查看次数

与Jaxer的利弊

我意识到之前曾经问过这个问题,但是已经有一个月没有得到好评......我正在看Aptana的Jaxer,我发现这个概念非常令人兴奋.

以下是对不熟悉它的人的快速概述:

用他们的话说,Jaxer是"世界上第一个真正的AJAX服务器".它基于Mozilla引擎,因此脚本使用javascript编写,您可以完全访问服务器端的DOM.

脚本放在带有<script>标签的页面上,您可以指定一个runat属性(ala ASP.NET)来标记要在客户端,服务器上执行的脚本,或者作为"服务器代理",使客户端上的功能可用,但它们通过AJAX在服务器上执行.这也意味着您可以在服务器和客户端上使用您喜欢的客户端库(jQuery,Prototype).

它还可以用来处理用另一种语言生成的文档(例如php,ruby),我想这是不切实际的,除了帮助转换现有的应用程序以使用Jaxer.

  • 优缺点都有什么?
  • API的成熟/稳定程度如何?
  • 与其他服务器端html预处理器相比,性能有多好?
  • 有没有人使用Jaxer与另一种技术(PHP,珍珠,红宝石等),你有什么经历?

编辑:我发布了另一个关于我在使用Jaxer时发现的缺点的问题:使用Jaxer时定义对象

javascript aptana ajax jaxer

8
推荐指数
1
解决办法
2357
查看次数

37
推荐指数
5
解决办法
3万
查看次数

黑盒与白盒重复使用

使用黑盒重用而不是白盒重用的优缺点是什么?

oop

3
推荐指数
1
解决办法
8477
查看次数

是否有使用Squeak Smalltalk的大型商业项目?

我一直在学习Squeak Smalltalk,并注意到它有一个非常忠实的社区,并且在一些大型的学术和开源项目中使用,但我没有找到任何在商业上以任何重要方式使用它的例子.我很好奇这个环境在世界范围内的商业运作方式.也许接管旧的Smalltalk项目?有人知道吗?

smalltalk squeak

7
推荐指数
3
解决办法
1539
查看次数