我现在正在为一个基本的虚拟文件系统存档(没有压缩)编写一个提取器.
我的提取器在将文件写入不存在的目录时遇到问题.
提取功能:
void extract(ifstream * ifs, unsigned int offset, unsigned int length, std::string path)
{
char * file = new char[length];
ifs->seekg(offset);
ifs->read(file, length);
ofstream ofs(path.c_str(), ios::out|ios::binary);
ofs.write(file, length);
ofs.close();
cout << patch << ", " << length << endl;
system("pause");
delete [] file;
}
Run Code Online (Sandbox Code Playgroud)
ifs是vfs根文件,offset是文件启动时的值,length是文件长度,path是文件中保存偏移len等的值.
例如,path是data/char/actormotion.txt.
谢谢.
如何在C#应用程序的自己的进程中以编程方式启动PDF?
原来:当我点击C#.Net中的按钮时,我想打开PDF文件?
我使用的fs.Length,这里fs是一个FileStream.
这是一个O(1)手术吗?我认为这只会从文件的属性中读取,而不是通过文件来查找搜索位置到达结尾的时间.我试图找到长度的文件可以很容易地从1 MB到4-5 GB.
但是我注意到有一个FileInfo类,它也有一个Length属性.
Length理论上这两个属性是否需要相同的时间?或者确实fs.Length较慢,因为它必须打开第FileStream一个?
MSDN说FileStream.Flush(True)"还会清除所有中间文件缓冲区."
"所有中间文件缓冲区"到底意味着什么?
我正在将OpenPyXL构建到一个应用程序中,该应用程序需要一个包含excel文件内容的字符串,以便通过文件流进行写入.
从我对OpenPyXL源代码的调查来看,它看起来不像是支持这种输出.有没有人有修改openpyxl的经验来支持这个?
或者任何一般性建议/解决方法?
谢谢.
我已经搜遍过,但找不到这个问题的答案.据我所知,FileAccess处理机器上的文件访问,FileShare处理共享,但我无法找到它是如何组合以及它们如何相互影响的解释.
例如,如果我有
using ( FileStream fs = new FileStream( pathName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) )
Run Code Online (Sandbox Code Playgroud)
这是否意味着机器上的用户只能读取文件,而远程访问该文件夹的用户可以读取和写入文件?此外,使用会产生什么影响
using ( FileStream fs = new FileStream( pathName, FileMode.Open, FileAccess.Read ) )
Run Code Online (Sandbox Code Playgroud)
我还没有指定FileShare?
据我所知,.NET FileStream的Flush方法只将当前缓冲区写入磁盘,但依赖于Windows的磁盘驱动程序和硬盘固件,这并不能保证数据实际上是物理写入磁盘的.
是否有.NET或Win32方法可以给我这个保证?因此,如果在调用此方法后一纳秒之后出现断电,我仍然可以确定一切正常吗?
我想将流结果输出转换为字符串,因为我想在Junit中使用它我认为我需要使用字符串编写器,但我不确定如何使用它.
StreamResult result = new StreamResult(new File("C:\\file.xml"));
transformer.transform(source, result);
Run Code Online (Sandbox Code Playgroud)
谢谢Fedor
我有一个带有ASP.Net Web API的angular2项目.我有代码从我的数据库中检索文件路径,该文件路径转到我服务器上的文档.然后,我想在浏览器中的新选项卡中显示此文档.有没有人有任何建议怎么做?
我很高兴在Angular2(Typescript)或我的API中检索文件并将其流式传输.
这是我尝试在我的API中检索它但我无法弄清楚如何在Angular2中接收它并正确显示它:
public HttpResponseMessage GetSOP(string partnum, string description)
{
var sopPath = _uow.EpicorService.GetSOP(partnum, description).Path;
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(sopPath, FileMode.Open);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
return result;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
非常感谢!!!