.NET Framework 4.5通过类添加了对ZIP文件的支持System.IO.Compression.
假设我的.ZIP存档sample.xml在根目录中有文件.我想直接从存档到内存流读取此文件,然后将其反序列化为自定义.NET对象.做这个的最好方式是什么?
最近我遇到了一个我没想到的异常,因为在MSDN中没有记录它可以被特定的构造函数抛出.所以这是引发异常的C#行:
using (StreamReader sr = new StreamReader(filePath))
Run Code Online (Sandbox Code Playgroud)
filePath here是应该包含某个文件的完整路径的字符串.问题是我的"filePath"变量实际上是文件夹的路径,而不是文件的路径.因此构造函数StreamReader(filePath)抛出:
System.UnauthorizedAccessException: Access to the path 'D:\testFolder' is denied.
Run Code Online (Sandbox Code Playgroud)
好的,所以这显然是一个错误,我通过传递正确的路径修复它...但是查看流式读取器的MSDN文档(字符串)我没有看到任何提及此异常.在例外部分,有:
考虑更多关于这个问题,我想抛出的异常实际上应该是IOException而不是UnauthorizedAccessException.这是.NET Framework中的错误吗?问题是我有IOException处理程序,它通知用户无效的文件路径并继续应用程序工作流而不会崩溃.这个UnauthorizedAccessException崩溃了我的应用程序,因为它未处理.
我该如何处理这类问题?我想我过去遇到了类似的无证异常问题,但这个问题确实促使我研究这个问题并在这里提问.
当我使用node.js创建一个简单的网站时,我可以使用视图引擎(例如,jade)和为其提供数据的控制器(例如,简单的待办事项列表).但是,如果我决定将AngularJS添加为客户端框架,那么我似乎必须在后端实现REST API以从中获取数据.几乎所有我在线使用AngularJS看到的例子都有这个基本架构:客户端(angular)通过REST API与服务器通信.
可以在没有REST API的情况下使用AngularJS,如果是这样,我应该这样做还是应该避免使用它?在没有REST API后端的情况下使用AngularJS是否有任何建议/最佳实践?
我是Visio 2010的新手,并且想知道有没有办法创建目录树的分层图?此文件夹树可能还包含文件,它实际上不需要在我的本地硬盘驱动器上实际存在,我只想通过使用组织结构图模板在Visio 2010中创建它.
我是.NET开发人员,我只想创建一个非常大的Visual Studio项目文件夹结构的演示文稿.有源代码文件夹,输出文件夹,资源文件夹,第三方库文件夹等...每个包含一些文件.因此,在向同事解释项目结构时,一些可视化和图表将非常有用.我正在搜索和搜索Visio模板用于此目的,但遗憾的是没有找到任何.我不确定是否应该将Visio 2010用于此目的,但我知道它是最着名的可用绘图工具,因此我假设可能有一个功能用于此目的.
有没有办法在Visual Studio 2010中为XAML编辑器添加XAML片段?例如,我想从一些打字中保存自己,并且有类似这样的事情:
片段:
gr<TAB>
生成代码:
<Grid>
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)
然后,如果我键入例如:rd<TAB>它应该生成<RowDefinition />
同样,cd<TAB>应该生成<ColumnDefinition />
和其他XAML元素类似.
我想你明白了......重点是让这些片段只在Visual Studio的XAML编辑器中可用.将它们放在Visual Studio中的其他代码编辑器中(例如,在编辑.cs文件时)没有意义.
我正在使用npm 调试包将消息记录到控制台(而不是常规的console.log())。有没有办法用这个调试库显示消息的时间戳?例如,我想以以下格式显示所有日志消息:
debug("Server started")
Run Code Online (Sandbox Code Playgroud)
并以一种形式获取输出:
[16:24:15] 服务器启动
其中 16:24:15 是当前时间。理想情况下,我希望能够指定时间格式(例如添加毫秒等)。
我正在学习 Docker,并且我已经安装了适用于 Windows 的 Docker。我对两个命令行程序感到困惑,一个是 docker.exe (完整路径:C:\Program Files\Docker\Docker\Resources\bin\docker.exe),另一个是 DockerCli.exe (完整路径:c:\程序文件\Docker\Docker\DockerCli.exe)
为什么 Docker 有两个命令行界面?此外,我可以调用多个“版本”命令。当我运行时,docker version我得到以下输出:
c:\Program Files\Docker\Docker>docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:31 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: false
Run Code Online (Sandbox Code Playgroud)
这与我跑步时不同docker -v:
c:\Program …Run Code Online (Sandbox Code Playgroud) 我正在学习 git 内部结构以及 git 对象模型如何“在幕后”工作。
如果我更改某个文件并将其提交到本地 git 存储库中,commit object则会创建一个新的 git 。每个提交对象都tree object与它相关联。每个树对象都包含它指向的文件(blob)的 SHA1。那么这是否意味着每个新提交(假设其中有一些文件更改)总是会生成一个新的树对象(即使它们指向文件系统上的同一目录,它也会具有与所有以前的树不同的 SHA1)?
我对此的推理是否正确?另外,是否可以在不更改文件的情况下提交?在这种情况下,不需要新的,tree object但我不知道在 git 中是否可以进行这种类型的提交。
我是一名.NET开发人员(已超过6年),刚开始学习移动/智能手机/平板电脑的开发.从逻辑上讲,我(也可能是其他所有人)希望我们创建的应用程序能够在所有智能手机平台上运行.从普通用户(外行)的角度来看,如果它是一个"移动应用程序"它应该在移动设备上运行,这感觉很自然.如果我拥有iPhone或Android应该没关系,移动应用程序是一个移动应用程序.注意:我说的是本机平台开发,而不是可以从浏览器中使用的HTML/Web应用程序.
所以这只是一个高级别的概述问题......目前处理这个问题的策略(2013年)是什么?我想象移动跨平台开发工作的方式是,可能只有一个通用代码库来实现应用程序的业务逻辑,然后对于每个定位平台,我们需要单独开发GUI部分.这在实践中与真相有多远?
以流行游戏"愤怒的小鸟"为例.我在iPhone,Android甚至是Windows桌面上的Chrome浏览器(可能是Flash或HTML5游戏)上播放它,每个版本在播放时都有相同的感觉.他们是怎么做到的?我想他们将游戏引擎作为通用代码,但用什么语言编写呢?据我所知,没有通用的编程语言给出单个源代码文件,它可以编译成ios/android/win8手机的原生二进制文件.
我是Ruby on Rails的新手,我使用SQLite3作为我的示例项目的数据库.我试图在两个模型之间创建普通的一对多关系(例如,每个产品有一个所有者,每个所有者可以有许多产品).这很好,并且正确创建了数据库模式.但是,当我在数据库管理工具中打开development.sqlite3时(我使用免费的SQLite Express Personal http://www.sqliteexpert.com/download.html)我没有看到该数据库具有参照完整性.即使包含owner_id列,也没有为Product表列出外键.
我尝试通过添加选项键来更改database.yml:
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
options: "PRAGMA foreign_keys=ON"
Run Code Online (Sandbox Code Playgroud)
然后重新创建数据库:
rake db:drop db:create db:migrate
Run Code Online (Sandbox Code Playgroud)
这会重新创建数据库,但同样没有列出外键.
难道我做错了什么?是否有解决方案.(PS.如果这很重要,我在Windows 8.1上运行所有这些)