Schreiben Sie Die Registerkarte Datei Mit Trennzeichen
Ich habe Probleme beim schreiben eine Tab-getrennte Datei, und ich habe überprüft, um hier und noch nicht dazu gekommen meine Antworten noch.
Also ich habe da eine Funktion gibt den string zurück, mit dem wichtige Teile unten (Trennzeichen verwendet und wie Baue ich jede Zeile):
var delimiter = @"\t";
sb.Append(string.Join(delimiter, itemContent));
sb.Append(Environment.NewLine);
Den string der zurückgegeben wird, wie dieser:
H\t13\t170000000000001\t20150630
D\t1050\t10.0000\tY
D\t1050\t5.0000\tN
Und dann Schreibe ich es in eine Datei (Inhalt unter den string oben):
var content = BuildFile(item);
var filePath = tempDirectory + fileName;
//Create the File
using (FileStream fs = File.Create(filePath))
{
Byte[] info = new UTF8Encoding(true).GetBytes(content);
fs.Write(info, 0, info.Length);
}
Jedoch, die Datei-Ausgabe ist diese nicht mit tabs (geöffnet mit notepad++):
H\t13\t170000000000005\t20150630
D\t1050\t20.0000\tN
D\t1050\t2.5000\tY
Wenn es mehr werden sollte, wie diese (Beispiel-Datei zur Verfügung gestellt):
H 100115980 300010000000003 20150625
D 430181 1 N
D 342130 2 N
D 459961 1 N
Könnte dies werden verursacht durch die Codierung, die ich verwendet? Schätzen jede Eingabe, die Sie haben können, danke!
nicht wirklich, dies ist im wesentlichen eine Frage zu strings und C# - syntax
Sie können auch ControlChars.Tab (
sb.Append(string.Join(ControlChars.Tab, itemContent));
), wenn Sie annehmen, um fügen Sie einen Verweis auf Microsoft.VisualBasic
verwenden
Path.Combine(tempDirectory, fileName);
InformationsquelleAutor AnimaSola | 2015-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
var delimiter = @"\t";
die variable enthält eine wörtliche\
plust
. Der @ - syntax deaktiviert den backslash als "special". In diesem Fall, Sie wirklich wollen,haben ein tab-Zeichen.
InformationsquelleAutor Hans Kesting
Ist ein Tippfehler im code. Die
@
Präfix bedeutet, dass die folgende Zeichenfolge ist ein literal, also @"\t" ist ein zwei-Zeichen-string mit Zeichen\
undt
Sollten Sie "\t", ohne das Präfix.
Sollten Sie eine StreamWriter statt zu konstruieren wird der gesamte string im Speicher und dem schreiben der raw-bytes, obwohl. StreamWriter verwendet standardmäßig UTF-8 und ermöglicht Ihnen das schreiben von formatierten Zeilen genauso wie mit der Konsole.WriteLine:
InformationsquelleAutor Panagiotis Kanavos