我在内存中有一个非常大的2D字节数组,
byte MyBA = new byte[int.MaxValue][10];
Run Code Online (Sandbox Code Playgroud)
有什么方法(可能是不安全的)我可以欺骗C#认为这是一个巨大的连续字节数组?我想这样做,以便我可以将它传递给a MemoryStream然后a BinaryReader.
MyReader = new BinaryReader(MemoryStream(*MyBA)) //Syntax obviously made-up here
Run Code Online (Sandbox Code Playgroud) 我从WCF服务返回一个流,并尝试将其转换为Web应用程序中的MemoryStream.But,其中使用WCF服务,我从"MessageBodyStream"获取结果,我期待"System.IO.Stream" ".我怎样才能将其转换为MemoryStream?
我的应用程序必须处理存储在 MemoryStream 中的 TIFF 文件,但 LibTiff.Net 始终返回null字段值。
MemoryStream ms = new MemoryStream();
FileStream fs = new FileStream("testfile.tif", FileMode.Open);
fs.CopyTo(ms);
//It seems (memory) streams have to be opened in write mode, "r" always returns <null>
Tiff tiff = Tiff.ClientOpen("someArbitraryName", "w", ms, new TiffStream());
FieldValue[] imageHeight = tif.GetField(TiffTag.IMAGELENGTH);
Run Code Online (Sandbox Code Playgroud)
直接打开文件进行读取Tiff.Open效果很好。
这是 LibTiff.Net 库中的错误还是我遗漏了什么?
我尝试了几种方法来做到这一点,但仍然无法得到它.似乎iTextSharp需要2遍情况,以便图像出现在文本的顶部.所以我试图使用内存流来做到这一点,但我一直在收到错误.
Public Function createDoc(ByRef reqResponse As HttpResponse) As Boolean
Dim m As System.IO.MemoryStream = New System.IO.MemoryStream()
Dim document As Document = New Document()
Dim writer As PdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(document, m)
document.Open()
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Close()
writer.Flush()
writer.Flush()
'yes; I get the pdf if this is the last statement
'reqResponse.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length)
'this statment does not work it says the stream is closed
'm.Position = 0
Dim Reader As PdfReader …Run Code Online (Sandbox Code Playgroud) 我有一个MemoryStream在运行时从文件创建的。
然后对其MemoryStream进行编辑并删除一些字节。
现在我必须维护一个恒定的文件大小,所以我必须MemoryStream用 0xFF 字节填充..
执行此操作最快的方法是什么?
我知道,我总是可以循环遍历MemoryStream大小并添加 0xFF,但我需要知道一种更快、更有效的方法来做到这一点!
嗨,我正在使用 closedxml DLL 导出到 excel 我有如下静态方法
public static void WriteToExcel(string fileName, List<CP> pages)
{
var wb = new XLWorkbook();
byte[] file;
var ws = wb.Worksheets.Add("CPs");
WriteCostHeader(ws);
////write all the header columns
//for (int i = 0; i < pages.Count; i++)
int iRow = 2;
foreach(var page in pages)
{
WriteCostPage(ws, page, iRow++);
WriteCostItemHead(ws, iRow++);
foreach(var item in page.Items)
{
WriteCostItem(ws, item, iRow++);
}
iRow++;
}
wb.SaveAs(fileName);
}
Run Code Online (Sandbox Code Playgroud)
我在下面这样的方法中调用上面的函数
public static List<CP> Init()
{
//binding items to to list
}
static …Run Code Online (Sandbox Code Playgroud) 我使用CSVHelper将对象列表转换为csv然后将其保存到FTP - 但内容的长度未正确计算,因此内容的末尾被截断.谁能看到我在这里做错了什么;
using (var memoryStream = new MemoryStream())
{
using (var streamWriter = new StreamWriter(memoryStream))
{
using (var csvWriter = new CsvWriter(streamWriter))
{
csvWriter.Configuration.Delimiter = ";";
csvWriter.Configuration.HasHeaderRecord = false;
csvWriter.WriteRecords<MyObject>(myObjectList);
var request = (FtpWebRequest)WebRequest.Create(".../my.csv");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("user", "pass");
request.ContentLength = memoryStream.Length;
byte[] fileContents = memoryStream.ToArray();
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
memoryStream.Length和fileContents.Length都给出了相同的数字,但与实际数据量相比,它很小.
我正在尝试将我的Bitmap保存到MemoryStream - 这段代码有什么问题?为什么它让我争论?
private void insertBarCodesToPDF(Bitmap barcode)
{
.......
MemoryStream ms = new MemoryStream();
barcode.Save(ms, System.Drawing.Imaging.ImageFormat.MemoryBmp); //<----
byte [] qwe = ms.ToArray();
.......
}
Run Code Online (Sandbox Code Playgroud)
UPD: WordTest.FormTestWord.insertBarCodesToPDF(位图条形码)中的StackTrace System.Drawing.Image.Save(Stream stream,ImageCodecInfo encoder,EncoderParameters encoderParams)
我们使用的是asp.net的Asyncfileupload控件来上传文件,同样不行我们调试了一下,发现这样的代码:
input.Read(buffer, 0, buffer.Length)
Run Code Online (Sandbox Code Playgroud)
返回 0。
整个代码是这样的:
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[input.Length];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何使用 Microsoft 的 Open XML SDK。我按照他们关于如何使用 a 创建 Word 文档的步骤进行操作FileStream,效果非常好。现在我想创建一个Word文档,但仅在内存中,并等待用户指定是否要保存该文件。
Microsoft 的这份文档说明了如何使用 处理内存中的文档MemoryStream,但是,该文档首先从现有文件加载并“转储”到MemorySteam. 我想要的是完全在内存中创建文档(而不是基于驱动器中的文件)。我认为可以实现这一点的是这段代码:
// This is almost the same as Microsoft's code except I don't
// dump any files into the MemoryStream
using (var mem = new MemoryStream())
{
using (var doc = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document, true))
{
doc.AddMainDocumentPart().Document = new Document();
var body = doc.MainDocumentPart.Document.AppendChild(new Body());
var paragraph = body.AppendChild(new Paragraph());
var run = paragraph.AppendChild(new Run());
run.AppendChild(new Text("Hello docx"));
using (var file …Run Code Online (Sandbox Code Playgroud) memorystream ×10
c# ×8
.net ×2
.net-core ×1
asp.net ×1
bitmap ×1
csvhelper ×1
excel ×1
filestream ×1
itextsharp ×1
large-data ×1
libtiff.net ×1
ms-word ×1
openxml ×1
padding ×1
response ×1
save ×1
streamwriter ×1
tiff ×1