标签: filestream

字节流和字符流

请解释Byte流和字符流是什么.这究竟是什么意思?Microsoft Word文档是面向字节还是面向字符?

谢谢

java iostream filestream

41
推荐指数
4
解决办法
3万
查看次数

将MemoryStream复制到FileStream并保存文件?

我不明白我在这里做错了什么.我生成了几个内存流,在调试模式下,我看到它们已经填充.但是当我尝试复制MemoryStreamFileStream为了保存文件时fileStream没有填充文件并且文件长度为0bytes(空).

这是我的代码

if (file.ContentLength > 0)
{
    var bytes = ImageUploader.FilestreamToBytes(file); // bytes is populated

    using (var inStream = new MemoryStream(bytes)) // inStream is populated
    {
        using (var outStream = new MemoryStream())
        {
            using (var imageFactory = new ImageFactory())
            {
                imageFactory.Load(inStream)
                            .Resize(new Size(320, 0))
                            .Format(ImageFormat.Jpeg)
                            .Quality(70)
                            .Save(outStream);
            }

            // outStream is populated here

            var fileName = "test.jpg";

            using (var fileStream = new FileStream(Server.MapPath("~/content/u/") + fileName, FileMode.CreateNew, FileAccess.ReadWrite))
            {
                outStream.CopyTo(fileStream); // fileStream is not populated …
Run Code Online (Sandbox Code Playgroud)

c# memorystream file-upload filestream

39
推荐指数
3
解决办法
9万
查看次数

读取由另一个应用程序锁定的文本文件的最简单方法

我一直在使用File.ReadAllText来获取一些csv,但每次忘记在Excel中关闭文件时,应用程序都会抛出异常,因为它无法访问该文件.

(对我来说似乎很疯狂,我的意思是ReadAllText中的READ似乎很清楚)

我知道File.Open有所有的花里胡哨,但有没有'中间'方法,不涉及到缓冲区和字符串数组?

是的,我很懒,所以投我一票,先给我答案:)

c# filestream text-files

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

using子句会关闭此流吗?

我显然已经习惯了一个糟糕的编码习惯.这是我写的代码示例:

using(StreamReader sr = new StreamReader(File.Open("somefile.txt", FileMode.Open)))
{
    //read file
}
File.Move("somefile.txt", "somefile.bak"); //can't move, get exception that I the file is open
Run Code Online (Sandbox Code Playgroud)

我认为,因为using条款明确要求Close(),并Dispose()StreamReaderFileStream会也关闭.

我能解决问题的唯一方法是将上面的块更改为:

using(FileStream fs = File.Open("somefile.txt", FileMode.Open))
{
  using(StreamReader sr = new StreamReader(fs))
  {
    //read file
  }
}

File.Move("somefile.txt", "somefile.bak"); // can move file with no errors
Run Code Online (Sandbox Code Playgroud)

应该StreamReader通过在第一个区块中关闭而关闭底层FileStream?或者,我错了吗?

编辑

我决定发布实际的违规代码块,看看我们是否可以深入了解这一点.我现在很好奇.

我以为我在using条款中遇到了问题,所以我把所有内容都扩展了,每次都无法复制.我在这个方法调用中创建了文件,所以我认为其他任何文件都没有打开句柄.我还验证了Path.Combine调用返回的字符串是否正确.

private static void GenerateFiles(List<Credit> credits)
{
    Account i; …
Run Code Online (Sandbox Code Playgroud)

c# dispose filestream streamreader

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

在C#中编辑文本文件的特定行

我有两个文本文件,Source.txt和Target.txt.源将永远不会被修改并包含N行文本.所以,我想删除Target.txt中的特定文本行,并用Source.txt中的特定文本行替换,我知道我需要的行数,实际上是行号2,两个文件.

我有这样的事情:

string line = string.Empty;
int line_number = 1;
int line_to_edit = 2;

using (StreamReader reader = new StreamReader(@"C:\source.xml"))
{
    using (StreamWriter writer = new StreamWriter(@"C:\target.xml"))
    {
        while ((line = reader.ReadLine()) != null)
        {
            if (line_number == line_to_edit)
            {
                writer.WriteLine(line);
            } 

            line_number++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我打开Writer时,目标文件被擦除,它会写入行,但是,当打开时,目标文件只包含复制的行,其余的则丢失.

我能做什么?

c# stream filestream

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

使用c#将FileStream编码为base64

我知道如何编码/解码一个简单的字符串到/从base64.

但是,如果数据已经写入FileStream对象,我该怎么做呢?假设我只能访问FileStream对象,而不能访问之前存储的原始数据.在将FileStream刷新到文件之前,如何将FileStream编码为base64.

在我将FileStream写入文件之后,我可以打开我的文件并对其进行编码/解码,但我想一步一步完成所有这一切,而不是一个接一个地执行两个文件操作.该文件可能更大,并且在刚刚保存一段时间后再加载,编码并再次保存它也需要两倍的时间.

也许有人认识一个更好的解决方案?我可以将FileStream转换为字符串,对字符串进行编码,然后将字符串转换回FileStream,例如,我将做什么以及这样的代码将如何?

c# string base64 file filestream

29
推荐指数
7
解决办法
7万
查看次数

FILESTREAM功能已禁用

我在其上启用了FILESTREAM数据库设置(如果您转到实例上的Properties\Advanced,则表明已启用FILESTREAM).在执行此操作后,我还在其上运行了sp_configure脚本以启用访问(以确保它已启用).但是......一旦我尝试更改数据库并向其添加文件组,它就会说该功能已被禁用.

我在同一台计算机上的其他实例上启用了它,这些工作正常.只有这一个不起作用.我一直无法找到任何好的建议,为什么它不起作用.

它是SQL 2008 R2实例.

sql filestream

28
推荐指数
6
解决办法
4万
查看次数

C相当于fstream的偷看

我知道在C++中,您可以使用以下方式查看下一个字符:in.peek();.

当我试图"查看"C中文件的下一个字符时,我该怎么做呢?

c stdio filestream peek

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

stream.CopyTo - 文件为空.asp.net

我正在使用此代码保存上传的图像:

using (var fileStream = File.Create(savePath))
{
   stream.CopyTo(fileStream);
}
Run Code Online (Sandbox Code Playgroud)

当图像保存到目标文件夹时,它是空的,0 kb.这可能有什么不对吗?我在复制之前检查了stream.Length并且它不是空的.

c# asp.net filestream

27
推荐指数
1
解决办法
9841
查看次数

如何更快地反向扫描二进制文件?

我有一个描述分组数据结构的二进制文件规范.每个数据包都有一个两字节的同步模式,因此可以使用BinaryReaderFileStream组合扫描数据包的开头:

while(!reader.EndOfFile)
{
    // Check for sync pattern.
    if (reader.ReadUInt16() != 0xEB25)
    {
        // Move to next byte.
        reader.BaseStream.Seek(-1, SeekOrigin.Current);
        continue;
    }

    // If we got here, a sync pattern was found.
}
Run Code Online (Sandbox Code Playgroud)

这个过程在向前方向上完全正常,但在相反方向扫描的类似代码至少慢两个数量级:

while(!reader.BeginningOfFile)
{
    // Check for sync pattern.
    if (reader.ReadUInt16() != 0xEB25)
    {
        // Move to previous byte.
        reader.BaseStream.Seek(-3, SeekOrigin.Current);
        continue;
    }

    // If we got here, a sync pattern was found.
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些解决方法,比如向后移动一个任意数量(当前为1兆字节)并向前扫描,但很明显我真正需要的是一个BinaryReaderFileStream那个被修改为具有足够的性能特征,同时读取前进和反方向.

我已经有一个FastFileStream通过子类化普通FileStream和缓存 …

c# reverse buffer filestream .net-3.5

27
推荐指数
2
解决办法
3648
查看次数