Autor Beitrag
TomCat
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 25.04.12 10:58 
Hallo,

ich möchte ein Array aus Integer-Zahlen in eine Datei schreiben. Mit der Methode: FileStream.Write
ist es scheints nur möglich, ein Byte-array in eine Datei zu schreiben.

Gibt es da eine andere Funktion mit der Integer-Array funktionieren?
THX TomCat

Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Mi 25.04.2012 um 11:20
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 25.04.12 11:21 
Hallo TomCat,

möchtest du die Werte binär oder als Text (String) abspeichern?
TomCat Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 25.04.12 12:14 
Hallo,
ich will die integerwerte einfach sequenziell binär abspeichern. Jeder Integerwert benötigt dann 4 Byte.

TomCat
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 25.04.12 12:34 
Dafür gibt es die Klasse BitConverter, welche dir entsprechende Methoden z.B. GetBytes() bietet, um ein Byte[] zu erzeugen, den du dann mittels FileStream.Write abspichern kannst.
TomCat Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 16.05.12 15:07 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Dafür gibt es die Klasse BitConverter, welche dir entsprechende Methoden z.B. GetBytes() bietet, um ein Byte[] zu erzeugen, den du dann mittels FileStream.Write abspichern kannst.


Aber das ist ja total umständlich und mühsam z.b. 1 mio. Integerwerte in einzelne Byte zu zerlegen nur weil die FileStream Klasse nur Byte fressen kann. Geht das nicht einfacher ? z.B. mit StreamWriter?

TomCat
ujr
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 102
Erhaltene Danke: 12



BeitragVerfasst: Mi 16.05.12 15:22 
user profile iconTomCat hat folgendes geschrieben Zum zitierten Posting springen:
z.B. mit StreamWriter?


Dazu könnte man ja mal in die Doku bei MSDN schauen. Und wenn es damit nicht geht, dann schaut man sich mal die anderen Klassen im System.IO-Namespace an. Und da gibt's dann ziemlich weit oben einen BinaryWriter. Was der wohl macht?

Eine Suche nach "C# write integer" findet bei Google auch sofort die Lösung. Ich werde wohl nie verstehen, warum Foren als Ersatz für eigenes Suchen verwendet werden.


Zuletzt bearbeitet von ujr am Mi 16.05.12 15:24, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 16.05.12 15:23 
Der würde das in einen string umwandeln du willst aber eine Bytedarstellung. Aber wo siehst du den Aufwand oder die Mühsal? Wenn du das auf den Programmierer beziehst ist das ein Einzeiler. Wenn er sich Mühe gibt das schön aussehen zu lassen dann vielleicht ein 2- oder 3zeiler. Wenn du das auf den Rechner beziehst dann ist der Aufwand für den eigentlich immer gleich egal ob du explizit in Bytes umwandelst oder das hinter irgendeiner Klasse aus dem Framework versteckst. Der Unterschied ist nur das du es eventuell nicht siehst.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mi 30.05.12 18:35 
Man ne andere Zwischenfrage:

Du willst ein Array speichern, wie hast du dir das vorgestellt?

Eine Zahl zu speichern ist im Prinzip einfach (schau mal hier im selben Unterforum nach, da wird erklärt, wie man Text aus einer TextBox in eine Datei schreiben kann. Wenn du da die nötigen Infos nicht raus lesen kannst, solltest du die Grundlagen lernen und nicht gleich ins Dateisystem gehen)

Da du aber ein Array hast, musst du entweder jede Zahl einzeln schreiben, oder irgendwie fest legen, wie das Array dann abgespeichert wird, oder du serialisierst es als xml und speicherst den zurück gegeben String.
Die xml-Variante ist die einfachste Möglichkeit (die ich kenne), ganze Objekte als Datei zu speichern und später wieder abzurufen.
Fündig wirst du bei Google sehr schnell, allerdings ist das, was ich benutzt habe, mit einem Beispiel Kunde gemacht.
Etwas ungünstig, aber die zwei Methoden sollten eigentlich kein Problem sein.

Wenn du weißt, was Generika sind, solltest du die auch gleich generisch machen, die Methoden, dann musst du dich um die nicht mehr kümmern und kannst sie überall nutzen.
Aber Vorsicht: XML kann nicht alles serialisieren. Dictionarys sind zum Beispiel nicht ohne weiteren, durchaus größeren Aufwand möglich.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 30.05.12 20:43 
Wenn du schon alte Themen ausgräbst, lies bitte etwas sorgfältiger nach:
user profile iconTomCat hat folgendes geschrieben Zum zitierten Posting springen:
ich will die integerwerte einfach sequenziell binär abspeichern. Jeder Integerwert benötigt dann 4 Byte.

_________________
>λ=