我正在编写处理使用哈希的文件的代码。我需要读取一个块,然后对其进行哈希处理,然后写入它,然后读取另一个块,等等。
换句话说,我需要做大量的阅读和写作。我确信这真的很简单,但我只是想由专业人士运行它......
是否可能并且可以接受执行以下操作:
BinaryReader br = new BinaryReader (File.OpenRead(path));
BinaryWriter bw = new BinaryWriter (File.OpenWrite(path));
br.dostuff();
bw.dostuff();
Run Code Online (Sandbox Code Playgroud)
我记得在尝试打开和写入文件时遇到了某种冲突的文件流错误,并且我不确定我做了什么来获得它。问题是两个文件流吗?我可以有一个流来读取和写入吗?
我有一个float写入文件的列表.下面的代码做了事情,但它是同步的.
List<float> samples = GetSamples();
using (FileStream stream = File.OpenWrite("somefile.bin"))
using (BinaryWriter binaryWriter = new BinaryWriter(stream, Encoding.Default, true))
{
foreach (var sample in samples)
{
binaryWriter.Write(sample);
}
}
Run Code Online (Sandbox Code Playgroud)
我想异步操作但BinaryWriter不支持异步操作,这是正常的,因为它每次只写几个字节.但大多数情况下,操作使用文件I/O,我认为它可以而且应该是异步的.
我试着写一个MemoryStream与BinaryWriter和时完成我复制MemoryStream到FileStream用CopyToAsync,然而这引起性能下降(总时间)高达100%的大文件.
如何将整个操作转换为异步?
我是新来的对象序列化,在我学习的过程中如何使用读取和写入文件(并行化和串行)BinaryFormatter,我遇到了BinaryReader和BinaryWriter,这似乎是做同样的事情.
有没有之间的一些微妙的差异BinaryFormatter.Serialize()和BinaryWriter?或者BinaryWriter只是执行相同操作的更紧凑的方式BinaryFormatter.Serialize()?
c# serialization binaryformatter binarywriter deserialization
我有一个像 temp = "0101110011" 这样的二进制数字符串,我想将它保存为文件,这个临时文件有 10 个字符,我如何将此字符串保存到 10 位长度的文件?
void Save_Data(string temp)
{
bool[] BoolArray = new bool[temp.Length];
BitArray Barray = new BitArray(BoolArray.Length);
char[] ch = temp.ToCharArray();
for (int i = 0; i < temp.Length; i++)
{
if (ch[i] == '0')
{
Barray[i] = false;
}
else
{
Barray[i] = true;
}
}
Stream stream = new FileStream("D:\\test.dat", FileMode.Create);
StreamWriter sw = new StreamWriter(stream);
foreach (bool bit in Barray)
{
sw.Write(bit ? 1 : 0);
}
sw.Flush();
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,我的文件长度为 …
我的应用程序是一个小型的C#数据库,我BinaryWriter用来将数据库保存到一个文件,该文件与bool,uint32等基本类型工作正常.
虽然我有一个类型的变量Object(允许用户)存储任何数据类型),但由于我的应用程序不(也不需要)知道此变量的实际类型,我不确定如何使用它来编写它BinaryWriter.
有没有办法我可以抓住变量的内存并保存?那可靠吗?
编辑:
ba_friend提供的答案有两个函数用于将Object解序/序列化为字节数组,可以使用BinaryWriter将其与其长度一起写入.
在 C# 中,我使用 BinaryWriter,如下所示:
BinaryWriter br = new BinaryWriter(myPipe);
var bytes = new byte[5];
br.Write(bytes);
br.Flush();
Run Code Online (Sandbox Code Playgroud)
https://msdn.microsoft.com/de-de/library/system.io.binarywriter.flush(v=vs.110).aspx提到您应该使用刷新二进制编写器。
但是我注意到,一旦调用 br.Write,数据就已经发送,并且我认为不需要调用 br.Flush?
我想知道是否可以删除那 1 行(不必要的)代码:br.Flush()或者是否还有更多代码?
我正在显示这样的图像:
<img src='counter.asp'>
Run Code Online (Sandbox Code Playgroud)
counter.asp正在做一个点击计数器确定图像显示的频率(我将用modrewriteURL 替换它).
问题:在counter.asp脚本中我需要将实际.jpg图像发送到浏览器.怎么可以这样做?我想我需要通过FSO加载图像,然后使用Response.BinaryWrite- 任何想法发送它?
为什么这段代码不会将我的字符串写入文件:
string file = "Myfile.txt";
MemoryStream ms = new MemoryStream();
void writeToFile(string text)
{
System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding();
byte[] barr = encoding.GetBytes(text);
ms.Write(barr, 0, barr.Length);
using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate))
{
using (BinaryWriter bw = new BinaryWriter(ms))
{
bw.Write(ms.ToArray());
}
}
}
static void Main(string[] args)
{
Program p = new Program();
p.writeToFile("Tony Test");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用 BinaryWriter 然后使用 BinaryReader 编写一些代码。当我想写时,我使用 Write() 方法。但问题是,在 Write 方法的两行之间出现了一个新字节,该字节在 ASCII 表中为十进制 31(sometines 24)。你可以在这张图片上看到它:

您可以看到索引 4 处的字节(第 5 个字节)的 ASCII 十进制值是 31。我没有在那里插入它。正如您所看到的,第一个 4 个字节是为数字(Int32)保留的,接下来是其他数据(主要是一些文本 - 现在这并不重要)。
正如您从我编写的代码中看到的: - 在第一行输入数字 10 - 在第二行文本“这是一些文本...”
第 5 个字节(12 月 31 日)是怎么出现在中间的?
这是我的代码:
static void Main(string[] args)
{
//
//// SEND - RECEIVE:
//
SendingData();
Console.ReadLine();
}
private static void SendingData()
{
int[] commandNumbers = { 1, 5, 10 }; //10 is for the users (when they send some text)!
for (int i …Run Code Online (Sandbox Code Playgroud) 我想将一个位写入二进制文件.
using (FileStream fileStream = new FileStream(@"myfile.bin", FileMode.Create))
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
binaryWriter.Write((bool)10);
}
Run Code Online (Sandbox Code Playgroud)
像binaryWriter.Write((bit)1);
我使用binaryWriter.Write((bool)1)文件时有一个字节,但我想写一个字节.这可能吗?
binarywriter ×10
c# ×9
binaryreader ×3
filestream ×2
asp-classic ×1
async-await ×1
bit ×1
bitarray ×1
byte ×1
database ×1
vbscript ×1
writer ×1
yield-return ×1