标签: streamwriter

在NamedPipe上发送多行字符串?

如何在NamedPipe上发送带有空行的多行字符串?

如果我发一个字符串

string text= @"line 1 
line2

line four
";
StreamWriter sw = new StreamWriter(client);
sw.Write(text);
Run Code Online (Sandbox Code Playgroud)

我只在服务器端"第1行":

StreamReader sr = new StreamReader(server);
string message = sr.ReadLine();
Run Code Online (Sandbox Code Playgroud)

当我尝试这样的事情

StringBuilder message = new StringBuilder();
string line;
while ((line = sr.ReadLine()) != null)
{
    message.Append(line + Environment.NewLine);
}
Run Code Online (Sandbox Code Playgroud)

它在客户端连接时挂起,只在客户端断开连接时才会释放.

任何想法我怎么能没有挂在这个循环中得到整个字符串?我需要处理字符串并以相同的方式将其返回给客户端.

保持字符串的原始格式包括空行和空格非常重要.

c# named-pipes streamwriter streamreader

0
推荐指数
1
解决办法
2211
查看次数

使用Excel的StreamReader和StreamWriter

我需要一些指导.

我正在使用StreamReader读取excel文件,然后使用StreamReader.ReadToEnd()将文件转换为字符串 ; 方法.然后我使用StreamWriter.Write()方法将字符串写入文件系统上的其他位置.

然后我从我之前写的位置重新读取文件.但是,我似乎正在阅读一些垃圾值,我无法从新位置打开excel文件...

我在这里做错了文件被破坏了吗?我在这里错过了与编码有关的事吗?

.net c# excel streamwriter streamreader

0
推荐指数
1
解决办法
5917
查看次数

File.ReadLines 相对于应用程序可执行文件的路径?

我正在读取和写入一些文本文件,并且当前正在使用设定路径。如何更改该设置路径以使用可执行文件所在的同一文件夹?

例如:

File.ReadLines(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt").Skip(1).ToList();
Run Code Online (Sandbox Code Playgroud)

和...

File.WriteAllLines(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt", lines);
Run Code Online (Sandbox Code Playgroud)

和...

using (StreamWriter writer = new StreamWriter(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt", true))
{
    writer.WriteLine(myText);
}
Run Code Online (Sandbox Code Playgroud)

在 IDE (Visual Studio) 中测试时它也需要工作。

c# file streamwriter streamreader filepath

0
推荐指数
1
解决办法
2521
查看次数

StreamWriter 权限不足,未授权访问异常

我正在使用以下代码将文件写入桌面。

string submittedFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
int i = 0;
StreamWriter sw = null;
sw = new StreamWriter(submittedFilePath, false);

for (i = 0; i < PSOLib.table.Columns.Count - 1; i++)
{
    sw.Write(PSOLib.table.Columns[i].ColumnName + ";");
}

sw.Write(PSOLib.table.Columns[i].ColumnName);
sw.WriteLine();

foreach (DataRow row in PSOLib.table.Rows)
{
    object[] array = row.ItemArray;

    for (i = 0; i < array.Length - 1; i++)
    {
        sw.Write(array[i].ToString() + ";");
    }

    sw.Write(array[i].ToString());
    sw.WriteLine();
}

sw.Close();
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试调用该方法时,我都会得到:

Access to the path 'C:\\Users\\User\\Desktop' is denied. 
System.UnauthorizedAccessException.
Run Code Online (Sandbox Code Playgroud)

c# exception streamwriter

0
推荐指数
1
解决办法
4234
查看次数

System.IO.StreamWriter:为什么我必须使用关键字"using"

//C#
using (System.IO.StreamWriter writer = 
    new System.IO.StreamWriter("me00.txt", true))
{
    writer.WriteLine("Hey"); //saved 
}
System.IO.StreamWriter writer02 = new System.IO.StreamWriter("me01.txt", true);
writer02.WriteLine("Now hey x2"); //not saved
Run Code Online (Sandbox Code Playgroud)

创建了文件me00.txt和me01.txt,但只保存了第一个文件的内容.

me00.txt会排队嘿.me01.txt将是一个空的txt文件; "现在嘿x2"没有保存.

关键词"使用"做了什么来引起这种观察?

c# text using streamwriter

0
推荐指数
1
解决办法
486
查看次数

C# Memorystream未完全保存到文件中

MemoryStream我正在使用和将对象导出到 csv StreamWriter。但保存文件后,我发现文件末尾丢失了。它在一条线的中间被切断。

下面是我的代码:

public void Export(ProductExport productExport)
{
    var country = (Country)(int.Parse(productExport.Firma.Code));

    using(var stream = new MemoryStream())
    {
        var sw = new StreamWriter(stream);

        // Write header row
        sw.WriteLine(
            "{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}",
            "Groep",
            "TecDoc Leverancier",
            "TecDoc Ref",
            "SA",
            "EAN",
            "Omschrijving NL",
            "V/E",
            "VPE",
            "Prijs per",
            "Bruto prijs"
        );

        foreach(var product in productExport.Products)
        {
            // Write header row
            sw.WriteLine(
                "{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}",
                product.Artgrp,
                product.TecDoc != null ? product.TecDoc.Supplier : "",
                product.TecDoc != null ? product.TecDoc.Value : "",
                product.Ids.Where<Id>(i => i.Type == "SA").Select(i => …
Run Code Online (Sandbox Code Playgroud)

c# memorystream streamwriter

0
推荐指数
1
解决办法
1328
查看次数

在 C# 中删除 CSV 中的尾随空格

我有一个 CSV 文件,某些列中有很多尾随空格,因此我尝试编写一个简单的 Windows 窗体应用程序,该应用程序循环遍历 CSV 中的所有行并删除尾随空格。我认为我还很远,但我有一种感觉,C# 将其视为一行:

"Lorem ipsum dolor sit amet","Default ",9999,1,"base "
Run Code Online (Sandbox Code Playgroud)

虽然它应该将其视为一行:

"Lorem ipsum dolor sit amet"
Run Code Online (Sandbox Code Playgroud)

这是我现在的代码:

String path = @"C:\Users\me\Documents\test.csv";

string[] allLines = File.ReadAllLines(path);
using (StreamWriter sw = new StreamWriter(path))
{
    foreach (string line in allLines)
    {
        if (!string.IsNullOrEmpty(line) && line.Length > 1)
        {                
            line.TrimEnd(' ');

            sw.WriteLine(line);
            //sw.WriteLine(line.TrimEnd(' '));
        }
    }
}
Console.WriteLine(allLines);
Console.WriteLine("Done");
Run Code Online (Sandbox Code Playgroud)

我如何确保我的 CSV 文件是这样的:

"Lorem ipsum dolor sit amet ","Default ",9999,1,"base "
"simple","Default ",9999,1," base"
"test ","Default ",9999,1,"base"
Run Code Online (Sandbox Code Playgroud)

运行如下 C# 代码后会出现(因此末尾和开头没有空格): …

c# csv trim streamwriter

0
推荐指数
1
解决办法
3105
查看次数

我在哪里放置dispose()?

简单的问题因为我太愚蠢了.我正在使用streamreader和writer,它给了我一个例外,即该文件已被另一个进程使用.我知道我必须设置一个.dispose()地方.但我真的不知道在哪里.我太盲目了.

这是我的代码:

protected void btn_Geht_Click(object sender, EventArgs e)
{
    string sPath = @"C:\VSTO\Projects\Zeiterfassung\Zeiterfassung\obj\Debug\Zeiten.txt";
    cZeile Geht = new cZeile();

    using (StreamReader sr = new StreamReader(sPath))
    {
        Geht = cZeiterfassung.GetZeileObjectFromZeileString(sr.ReadLine(), ";");

        Geht.Geht = DateTime.Now.ToString("hh:mm");
        Geht.dtGeht = DateTime.Now;
        sr.Dispose();

        using (StreamWriter sw = new StreamWriter(sPath))
        {
            File.WriteAllText(sPath, string.Format("{0:yyyyMMdd_hhmm};{1};{2:dd.MM.yyyy};{3:hh:mm};{4:hh:mm}", Geht.ID, Geht.User, Geht.Datum, Geht.Kommt, Geht.Geht));
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在这里得到错误:

File.WriteAllText(sPath, string.Format("{0:yyyyMMdd_hhmm};{1};{2:dd.MM.yyyy};{3:hh:mm};{4:hh:mm}", Geht.ID, Geht.User, Geht.Datum, Geht.Kommt, Geht.Geht));

进程无法访问该文件,因为它正由另一个进程使用

c# asp.net dispose streamwriter streamreader

0
推荐指数
1
解决办法
61
查看次数

异步写二进制?

我正在尝试使旧方法异步。
它从数据库中获取 BLOB 并将其作为文件写入磁盘。

但是,没有异步版本的BinaryWriter.
我可以用StreamWriter代替吗?因为它有WriteAsync方法。有什么区别?有什么缺点吗?

部分代码:

OracleParameter returnParam = new OracleParameter("blob", OracleDbType.Blob);
command.Parameters.Add(returnParam);

await command.ExecuteNonQueryAsync();

OracleBlob blob = returnParam.Value as OracleBlob;

byte[] data = new byte[blob.Length];

await blob.ReadAsync(data, 0, Convert.ToInt32(blob.Length));

fileFullPath = Path.Combine(folder, fileName);

using (FileStream fs = new FileStream(fileFullPath, FileMode.OpenOrCreate, FileAccess.Write))
{
    using (BinaryWriter bw = new BinaryWriter(fs))
    {
        bw.Write(data); //NO ASYNC METHOD HERE
        logger.Debug("Finished writing file {0} to disk", fileFullPath);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以改成下面这样吗?

OracleParameter returnParam = new OracleParameter("blob", OracleDbType.Blob);
command.Parameters.Add(returnParam);

await …
Run Code Online (Sandbox Code Playgroud)

.net c# binary-data streamwriter async-await

0
推荐指数
1
解决办法
515
查看次数

C#读写文件的问题

我的代码是:

StreamReader r = new StreamReader("temp.txt");
string str = r.ReadLine();
Console.WriteLine(str);
StreamWriter w = new StreamWriter("temp.txt");
w.WriteLine("new text");
str = r.ReadLine();
Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它抛出一个未处理的异常并且无法访问该文件。我确定文件的路径是正确的,并且没有写保护。

c# streamwriter streamreader

0
推荐指数
1
解决办法
76
查看次数