我正在开发一个应用程序,它遍历某些目录中的每个文件,并对这些文件执行一些操作.其中,我必须检索文件大小和修改此文件的日期.
有些文件全名(目录+文件名)太长,我无法使用.NET Framework FileInfo
,限制为MAX_PATH
(260个字符).许多Web资源建议通过P/Invoke使用本机Win32函数来访问名称太长的文件.
目前,Win32函数似乎出现了完全相同的问题.例如,对于GetFileAttributesEx
270字节的路径,(kernel32.dll)失败,Win32错误3 ERROR_PATH_NOT_FOUND.
可以从Notepad2成功打开同一个文件并使用Windows资源管理器成功显示(但Visual Studio 2010例如由于259个字符限制¹而无法打开它).
当文件路径长度为270个字符时,如何才能访问文件?
笔记:
删除或忽略文件路径长度超过259个字符的文件不是解决方案.
我正在寻找仅与Unicode兼容的解决方案.
该应用程序将在安装了.NET Framework 4的Windows 2008/Vista或更高版本下运行.
¹令人惊讶的是,Microsoft Word 2007失败了,在没有任何软盘驱动器的计算机上抱怨"软盘太小",或者在剩下4 GB RAM时"RAM内存很低",或者最后那个"防病毒软件[...]需要更新".他们有一天会停止显示至少在像Microsoft Office这样的关键产品中出现如此愚蠢无意义的错误吗?
Colelction.unmodifiableMap是否维护迭代顺序?
我正在尝试newMap.put(key,Collections.ModifiableMap(oldMap))然后执行newMap.get(key)并进行迭代时,迭代顺序似乎有所变化。
我们如何保护迭代顺序?
我无法弄清楚如何使用正向前瞻创建正则表达式.我们的想法是在长字符串中为每两个字符添加两个字符串.即
"090909" => "XX09XX09XX09"
Run Code Online (Sandbox Code Playgroud)
这段代码:
String s = "090909";
String ns = s.replaceAll("(?=\\d\\d)", "XX");
Run Code Online (Sandbox Code Playgroud)
......不起作用; 输出是XX0XX9XX0XX9XX09
.但是这段代码有效:
String s = "090909";
String ns = s.replaceAll("(?=09)", "XX");
Run Code Online (Sandbox Code Playgroud)
我很困惑如何为每两个字符提出一个表达前瞻性的表达方式.我错过了一些界限吗?
我已经阅读了数百篇文章和博客文章,称WebMatrix仅适用于初学者等.我的问题是,为什么我不应该使用WebMatrix来创建一个真实的工作网站,比如一个轻量级的问答网站?我们可以使用此工具创建网站所需的任何内容.那么为什么不使用呢?有什么真正的网站需要,WebMatrix无法完成?看起来可以使用此工具创建功能齐全且功能强大的网站.但人们说你不应该使用它,为什么?
我为我可怕的英语道歉!提前致谢.
实际上我总是使用Generic Collections而且我经常使用List <>.我觉得有些场景new List<string>()
非常难看,我更喜欢使用string[]
,但是我不使用它,因为据我所知,泛型有更好的性能,因此我使用它们.
string [],int []或任何非泛型数组对应用程序有害吗?
我只是想知道阵列和通用集合之间的区别是什么.
编辑:
让我们假装一个场景
我必须使用这种方法,我应该使用string[]
或List<string>
?什么更好?
static void PrintValues(IEnumerable<string> values) {
foreach(var value in values) {
Console.WriteLine(value);
}
}
Run Code Online (Sandbox Code Playgroud) 嗨,我有名为MyCode.h和MyCode.cpp的文件
在我已经声明的MyCode.h中
enum MyEnum {Something = 0, SomethingElse = 1};
class MyClass {
MyEnum enumInstance;
void Foo();
};
Run Code Online (Sandbox Code Playgroud)
然后在MyCode.cpp中:
#include "MyCode.h"
void MyClass::Foo() {
enumInstance = MyEnum::SomethingElse;
}
Run Code Online (Sandbox Code Playgroud)
但是当用g ++编译时,我得到错误'MyEnum'不是类或命名空间......
(在MS VS2010中工作正常,但不是linux g ++)
有任何想法吗?谢谢托马斯
我正在使用带有RSE的eclipse,当我在同一个网络时,它可以很好地连接到我的linux服务器,但由于服务器位于带有门入口的防火墙后面,我需要在其网络外部进行ssh隧道.
我还没有找到一种方法可以将我拥有隧道的本地端口添加到主机名,也无法在其他地方添加.
是否可以使用RSE连接到localhost:port?
我需要的是位于同一3D平面内且具有相同原点的两个矢量Va和Vb之间的有符号旋转角度,知道:
应该以这样的方式测量角度,因此如果平面是XY平面,则Va将代表它的X轴单位矢量.
我想我应该通过使用Va作为X轴并将Vb和Vn的叉积作为Y轴来执行一种坐标空间变换,然后使用像atan2()或其他东西一样的2d方法.有任何想法吗?公式?
我是ASP.NET MVC的新手,我正在努力找到最好的方法来做到这一点.这可能很简单,但我只是想做正确的事情所以我想我会问.
让我们说我的模型是这样的:
任务 - ID,描述,AssignedStaffMember
StaffMember - Id,FirstName,LastName
在我看来,我想创建一个新任务.我创建了一个强类型的Razor视图,并且可以使用EditorFor为Description创建文本框但是AssignedStaffMember呢?
我想要一个当前所有员工的下拉列表,并且可以选择一个,然后将其提交给一个动作方法
NewTask(string description, StaffMember assignedStaffMember)
,或者我可以为staffId而不是StaffMember对象提供一个int,并在动作中查找它方法.
做这个的最好方式是什么?我需要去数据库以获取员工名单,所以这就是我的想法:
对员工下拉列表进行部分查看,将使用几次并用于@Html.Action("ListStaff", "Staff")
调用它.然后动作方法有
public ActionResult ListStaff()
{
IEnumerable<StaffMember> model = _serviceLayer.GetAllStaff();
return PartialView(model);
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定它如何与模型绑定一起工作,我的理解是它必须有正确的名称才能提交表单,我需要将名称传递给局部视图以放置元素我猜?
不要让它调用控制器来获取工作人员,而是创建一个包含我的Task和IEnumerable possibleStaff集合的ViewModel.可能会将此信息发送到局部视图.
一个Html助手?
编辑器可以以某种方式使用?
哪一个(或者更多)最好?以及如何进行模型绑定?