我想使用FileSystemWatcher来监视目录及其子目录中移动的文件.然后我想在移动所有文件时触发一些代码.但我不知道怎么做.我的代码将在每次移动文件时触发,如果用户一次移动多个文件,我只希望它为所有文件触发一次.所以基本上我想要创建一个列表,一旦完成所有文件的移动,我想对该列表做一些事情......
这是代码:
class Monitor
{
private List<string> _filePaths;
public void CreateWatcher(string path)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Filter = "*.*";
watcher.Created += new
FileSystemEventHandler(watcher_FileCreated);
watcher.Path = path;
watcher.IncludeSubdirectories = true;
watcher.EnableRaisingEvents = true;
}
void watcher_FileCreated(object sender, FileSystemEventArgs e)
{
_filePaths.Add(e.FullPath);
Console.WriteLine("Files have been created or moved!");
}
}
Run Code Online (Sandbox Code Playgroud)
更新:尝试使用Chris的代码,但它不起作用(请参阅我在Chris的回答中的评论):
class Monitor
{
private List<string> _filePaths;
private Timer _notificationTimer;
private FileSystemWatcher _fsw;
public Monitor(string path)
{
_notificationTimer = new Timer();
_notificationTimer.Elapsed += notificationTimer_Elapsed;
// CooldownSeconds is the number of …
Run Code Online (Sandbox Code Playgroud) 我希望能够在同一视图中更新模型及其所有子对象集合.我已经参考了这些例子:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx和http://blog.stevensanderson.com/2010/01/ 28/editing-a-variable-length-list-aspnet-mvc-2-style /.
例如,我有一个对象顾问,它有一个"WorkExperiences"的集合.所有这些都在实体框架模型中.在视图中,Consultant对象的简单属性没有问题,但是我无法获得要显示的文本框的集合.我尝试按照上面的链接中的示例,但它不起作用.问题是,在这些示例中,模型只是一个列表(不是具有子列表属性的对象).而且,该模型再次是EF模型.由于某种原因,似乎在这些例子中不起作用.
为了简单起见,我尝试按照Phil Haacks的例子做一些事情,然后让View显示文本框:
@for (int i = 0; i < Model.WorkExperiences.Count; i++)
{
Html.TextBoxFor(m => m.WorkExperiences[i].Name);
}
Run Code Online (Sandbox Code Playgroud)
我试图在控制器中为ViewModel创建一个新的WorkExperience对象:
public ActionResult Create(int id)
{
Consultant consultant = _repository.GetConsultant(id);
DetailsViewModel vm = new DetailsViewModel();
vm.WorkExperiences = consultant.WorkExperiences.ToList();
vm.WorkExperiences.Add(new WorkExperience());
return View(vm);
}
Run Code Online (Sandbox Code Playgroud)
但View不显示WorkExperience Name属性的任何空文本框.另一方面,我创建一个单独的View只是为了添加一个新的WorkExperience对象,传递一个新的空WorkExperience对象作为模型,这很好:
@Html.EditorFor(model => model.Name)
Run Code Online (Sandbox Code Playgroud)
这给了我一个空文本框,我可以保存新对象.但是为什么我不能在与Consultant对象相同的视图中执行此操作,根据上面链接中的示例使用集合?
顺便说一句,这是对早期问题的一个后续问题,它向我指出了上述链接,但我从来没有找到它的最终解决方案.如果需要更多信息,请查看该问题:在MVC 3应用程序的模型中为对象属性创建视图?
更新:
根据下面的答案和评论,这里是View和EditorTemplate的更新:
风景:
@model Consultants.ViewModels.DetailsViewModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Add work experience", "CreateWorkExperience", new { id = ViewBag.Consultant.Id }) …
Run Code Online (Sandbox Code Playgroud) 我是AutoMapper的新手,我有一个看起来像这样的视图:
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Consultant</legend>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">
Program du behärskar:
</div>
<div>
<table id="programEditorRows">
<tr>
<th>
Program
</th>
<th>
Nivå
</th>
</tr>
@foreach (var item …
Run Code Online (Sandbox Code Playgroud) 我想尝试JNotify,用于监视文件系统更改的插件库,但无法弄清楚如何配置它.JNotify的网页说"java.library.path应该指向jnotify附带的本机库的位置(dll,所以dylibs等)".我是Mac OS X的新手,并不知道如何做到这一点.我正在使用NetBeans,并希望有一种简单的方法可以将其添加到那里的路径中.我通过简单地将jar文件添加到项目中的Libraries节点并通过"import net.contentobjects.jnotify.*;"导入它来尝试它,但这没有帮助.我明白了:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jnotify in java.library.path
Run Code Online (Sandbox Code Playgroud)
我似乎还需要在同一路径中添加本机库(Mac的.so文件).
那我该怎么做?
我正在寻找一种在Java应用程序中获取唯一文件ID的方法,并且遇到了这个:
现在,我尝试了Ashley Henderson自己提出的答案(提出问题的答案),这在C#中运行良好.但我需要在Java中执行此操作,以使应用程序跨平台工作.
有没有办法将其移植到Java,或以其他方式获得相同的ID?
编辑:
我现在几乎已经使用了eee的解决方案,只有我需要它在一个库中,当我将它编译为库时,我得到一个错误,即使一切都在包含所有内容的测试应用程序中正常工作.但是我尝试导入一个单独的库(没有编译器错误),我得到了这个运行时错误:
debug:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Structure
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at winfileid.FileId.getFileId(FileId.java:37)
at testfileid.TestFileId.main(TestFileId.java:19)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.Structure
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 14 more
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
Run Code Online (Sandbox Code Playgroud)
当我编译它时,我在库中包含了jna.jar和platform.jar ...请再次注意我对Java很新,但是我做错了什么?
我正在尝试使用XPathFactory来评估Java应用程序中的表达式.但我得到了一个特定于撒克逊的错误.有一段时间我使用Saxon来实现某些功能,为此,我必须设置一个系统属性:
System.setProperty("javax.xml.xpath.XPathFactory:" + NamespaceConstant.OBJECT_MODEL_SAXON,
"net.sf.saxon.xpath.XPathFactoryImpl");
XPathFactory xpf = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON);
Run Code Online (Sandbox Code Playgroud)
但是,现在我只想使用默认DOM(org.w3c.dom.Document)进行一些XML处理并使用xpath进行处理,因此不需要Saxon.但是当我尝试创建XPathFactory时,我仍然收到Saxon错误消息:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: net/sf/saxon/lib/EnvironmentVariableResolver
at net.sf.saxon.xpath.XPathFactoryImpl.<init>(XPathFactoryImpl.java:26)
...
Run Code Online (Sandbox Code Playgroud)
我甚至试过"重置"系统属性:
System.setProperty("javax.xml.xpath.XPathFactory:",
"org.apache.xpath.jaxp.XPathFactoryImpl");
XPathFactory factory = XPathFactory.newInstance();
Run Code Online (Sandbox Code Playgroud)
和
System.setProperty("javax.xml.xpath.XPathFactory:",
"http://java.sun.com/jaxp/xpath/dom");
XPathFactory factory = XPathFactory.newInstance();
Run Code Online (Sandbox Code Playgroud)
但这没有帮助,我仍然得到相同的错误信息.
为了再次使用默认的XPathFactory,我如何摆脱这个?(在我尝试使用Saxon之前,这个工作正常)
我正在通过"NerdDinner"教程尝试ASP.NET MVC 2.但显然MVC的第2版并没有像教程中那样创建一个Details页面,并且你可以在它们上面使用带有css类的div来设置样式.但是,我想得到每个标签跟在字段的同一行上的样式,我不能这样做,我把它们放在彼此的顶部,或者如果我尝试使用浮动奇怪的事情发生(可能是因为在这种情况下,我不确切知道如何使用它,其中每个其他div应该在同一行上).这是为Details页面生成的html:
<fieldset>
<legend>Fields</legend>
<div>
<div class="display-label">DinnerID</div>
<div class="display-field"><%: Model.DinnerID %></div>
<div class="display-label">Title</div>
<div class="display-field"><%: Model.Title %></div>
<div class="display-label">EventDate</div>
<div class="display-field"><%: String.Format("{0:g}", Model.EventDate) %></div>
<div class="display-label">Description</div>
<div class="display-field"><%: Model.Description %></div>
<div class="display-label">HostedBy</div>
<div class="display-field"><%: Model.HostedBy %></div>
<div class="display-label">ContactPhone</div>
<div class="display-field"><%: Model.ContactPhone %></div>
<div class="display-label">Address</div>
<div class="display-field"><%: Model.Address %></div>
<div class="display-label">Country</div>
<div class="display-field"><%: Model.Country %></div>
<div class="display-label">Latitude</div>
<div class="display-field"><%: String.Format("{0:F}", Model.Latitude) %></div>
<div class="display-label">Longitude</div>
<div class="display-field"><%: String.Format("{0:F}", Model.Longitude) %></div>
<div class="display-label">IsValid</div>
<div class="display-field"><%: Model.IsValid %></div>
</div>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
如何让每个"条目"的显示标签和显示字段显示在同一行?
我正在使用CodeIgniter的模板库,http: //williamsconcepts.com/ci/codeigniter/libraries/template/reference.html,现在我也想实现自定义错误页面.我找到了一个涉及MY_Router扩展默认路由器的方法:http://maestric.com/doc/php/codeigniter_404 但只处理404错误.我希望所有错误都显示一个简单的用户友好页面,包括数据库错误等,我希望它通过一个控制器,部分所以我可以使用模板库,部分所以我也可以实现一个电子邮件功能来发送自己有关发生的错误的信息.
有人问过将上述MY_Router方法的功能扩展到其他错误,比如error_db,但没有得到作者的回答,所以我转到这里看看是否有人知道如何做到这一点,按照上述方法或实现它的任何其他简单方法.请注意我是新手,所以不要过多地考虑我对基本CodeIgniter功能的了解:-)
我有一个使用jQuery Mobile和PHP(CodeIgniter框架)构建的Web应用程序.现在我正在尝试制作它的PhoneGap版本,使其可以作为独立应用程序分发.但是,PHP Web应用程序.版本使用Ion Auth,一个CodeIgniter插件进行身份验证.因此,当您转到需要身份验证的页面时,应用程序会将您重定向到身份验证控制器登录方法.在身份验证之后,它会将您重定向回主页(在本例中为jQuery Mobile页面).这在网络应用程序中工作正常,因为主页首先由家庭控制器打开.
但这里有关键:在PhoneGap版本中,"home"页面需要是PhoneGap中的index.html文件.显然,你可以通过添加在PhoneGap.plist值在启动时加载另一个网址,但无法接受被苹果提交到应用商店.如果我在身份验证中进行重定向,我无法在身份验证后返回index.html文件...
那么应该如何在PhoneGap/jQuery Mobile应用程序中进行身份验证呢?
更新:
我有这个根据答案的一个尝试,但应用程序仍试图导航到该帐户/登录页面(不存在),当时我只是想通过邮局登录并从该方法返回一个值:
$('#login_form').bind('submit', function () {
event.preventDefault();
//send a post request to your web-service
$.post('http://localhost/app_xcode/account/login', $(this).serialize(), function (response) {
//parse the response string into an object
var response = response;
//check if the authorization was successful or not
if (response == true) {
$.mobile.changePage('#toc', "slide");
} else {
alert('login failed');
$.mobile.changePage('#toc', "slide");
}
});
});
Run Code Online (Sandbox Code Playgroud)
这是控制器方法:
function login()
{
//validate form input
$this->form_validation->set_rules('identity', 'Identity', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$base_url = $this->config->item('base_url');
$mobile …
Run Code Online (Sandbox Code Playgroud) 我需要的是在Internet Explorer中将图像宽度的限制设置为100%,就像其他浏览器一样max-width
.也就是说,如果图像的宽度大于包含区域的宽度,则它会向下缩小以适应包含区域的宽度,但如果它更小,则其大小不会改变.同样,如果图像位于表格单元格(td
)中并且它大于单元格,我希望它缩放到单元格的大小,而不是扩展它.
虽然还有其他问题和答案似乎与此有关,但我无法让它们中的任何一个起作用.例如,通常建议此解决方案在Internet Explorer中模拟最大宽度:
http://www.svendtofte.com/code/max_width_in_ie/
本质上使用这个:
width:expression(
document.body.clientWidth > (500/12) *
parseInt(document.body.currentStyle.fontSize)?
"30em":
"auto" );
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试它时,我根本得不到预期的结果.在某些情况下,当我检查Firebug或类似的东西时,我得到宽度值-1并且根本没有显示图像.
我也不知道这个解决方案是如何运作的.
编辑:
根据要求,这里有一些示例代码:
<table cellpadding="4" cellspacing="0"
summary="" id="Push12Matt__simpletable_rph_vch_32" border="0" class="simpletable">
<tr class="strow">
<td valign="top" class="stentry" width="50%">
<div class="fig fignone" id="Push12Matt__fig_6a268fd9-2a26-474f-83f5-528ffbab70d3"><a
name="Push12Matt__fig_6a268fd9-2a26-474f-83f5-528ffbab70d3"><!-- --></a><p class="figcap"
>Bild 1. Uponor Push 12</p>
<a name="Push12Matt__image_4dd4d9ef-f95c-41f1-b423-7ddd3a2b0c06"><!-- --></a><img
class="image" id="Push12Matt__image_4dd4d9ef-f95c-41f1-b423-7ddd3a2b0c06"
src="/handbok/images/Push12/Push12_byggmatt.jpg" />
</div>
</td>
<td valign="top" class="stentry" width="50%">
<div class="fig fignone" id="Push12Matt__fig_689a2b08-ffbb-4f92-9a27-010e99665959"><a
name="Push12Matt__fig_689a2b08-ffbb-4f92-9a27-010e99665959"><!-- --></a><p class="figcap"
>Bild 2. Uponor ElPush 12</p>
<a name="Push12Matt__image_f6d7c2fa-8ab3-4e46-b79c-e7881dff03e9"><!-- --></a><img
class="image" id="Push12Matt__image_f6d7c2fa-8ab3-4e46-b79c-e7881dff03e9"
src="/handbok/images/Push12/Push12Electronic_byggmatt.jpg" …
Run Code Online (Sandbox Code Playgroud) java ×3
asp.net ×2
collections ×2
css ×2
asp.net-mvc ×1
automapper ×1
c# ×1
cordova ×1
entity ×1
filesystems ×1
jnotify ×1
macos ×1
null ×1
php ×1
saxon ×1
windows ×1
xml ×1
xpath ×1