Entwickler-Ecke
IO, XML und Registry - Dateiname aus Filestream lesen
lulu83 - Fr 15.11.13 08:46
Titel: Dateiname aus Filestream lesen
Hallo meine Lieben :)
ich stehe vor einem kleinen Problem und mir selbst ist nur eine ziemlich aufwändige Lösung eingefallen.
Und zwar habe ich ein Bluetooth-Dateiübertragungsprogramm geschrieben, welches mir ein paar Dateien von PC auf Laptop sendet.
Nun möchte ich aber 2 verschiedene Arten von Dateien, z.B. Bilder und Dokumente, seperat abspeichern.
Mein Empfängerprogramm gibt aber sozusagen den Dateinamen, sprich auch die Endung, vor.
C#-Quelltext
1:
| using (FileStream GetData = new FileStream(FDBPath, FileMode.Create)) |
Nun meine Frage:
Kann ich den ursprünglichen Dateinamen, meiner versendeten Datei, irgendwie aus dem Stream auslesen und weiterverwenden?
Eure lulu :roll:
lulu83 - Fr 15.11.13 10:42
Danke sehr :)
Jaa genau.
Das Prinzip an sich habe ich verstanden, nur die Umsetzung ist noch nicht ganz klar.
Wie man sicherlich merkt programmiere ich noch nicht so lange und verstehe nicht ganz wie ich den Namen einzelnd vorschicken kann. :?
lulu83 - Fr 15.11.13 12:26
Hey,
ich habe bis jetzt an einer Methode rumgebastelt nur leider funktioniert sie nicht ganz wie sie soll.
Nicht dass du denkst ich möchte einfach Lösungen ohne es zu verstehe. Nein das ist nicht mein Ziel..
Ich möchte es in erster Linie auch verstehen, um es noch öfter anwenden zu können.
Vielleicht schaust du mal über meinen Ansatz rüber :)
Problem: Der Sender sagt genau an welche Datei geschickt wird und sendet sie auch, nur wo die genau landet kann ich nicht sagen, weil sie nicht im Zielordner liegt :S
Sender:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| Client.EndConnect(result); updateUI("Verbunden.");
Stream = Client.GetStream();
Byte[]CommandBuffer = Encoding.ASCII.GetBytes(Command); Stream.Write(CommandBuffer, 0, CommandBuffer.Length);
Thread.Sleep(5000);
updateUI("Datei " + FilePath[0] + " wird gesendet.."); ShareData = File.OpenRead(FilePath[0]);
Byte[] Buffer = new Byte[1024]; long TotalLength = ShareData.Length; long CurrentLength = 0; int Read;
ProgressBar.Maximum = (int) TotalLength; ProgressBar.Step = (int) Buffer.Length; do { Read = ShareData.Read(Buffer, 0, Buffer.Length); Stream.Write(Buffer, 0, Read); CurrentLength += Read; ProgressBar.PerformStep(); } while (TotalLength != CurrentLength);
updateUI("Datei erfolgreich gesendet."); updateUI("");
Stream.Close(); ShareData.Close(); |
Empfänger:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60:
| BTListener.Start();
Client = BTListener.AcceptBluetoothClient();
Stream Stream = Client.GetStream();
while (WaitingForCommand) { byte[] Command = new byte[1024]; Stream.Read(Command, 0, Command.Length);
if("M" == Encoding.ASCII.GetString(Command)) { Path = @"C:\Users\Gesell\Desktop\Test\a.txt"; WaitingForCommand = false;
if (File.Exists(Path)) { Process MasterProcess = new Process(); MasterProcess.StartInfo.FileName = Name; MasterProcess.StartInfo.Arguments = Path;
try { MasterProcess.CloseMainWindow(); Thread.Sleep(500); if (MasterProcess.HasExited == false) MasterProcess.Kill(); } catch (InvalidOperationException ex) { }
File.Delete(Path); } } else if ("E" == Encoding.ASCII.GetString(Command)) { Path = @"C:\Users\Gesell\Desktop\Test\b.txt"; WaitingForCommand = false; } }
using (FileStream GetData = new FileStream(Path, FileMode.Create)) { Byte[] Buffer = new Byte[1024]; int Read = Buffer.Length;
while (Read != 0) { Read = Stream.Read(Buffer, 0, Buffer.Length);
GetData.Write(Buffer, 0, Read); } GetData.Close(); }
var FileGO = File.Create(Signal); FileGO.Close();
Stream.Close(); BTListener.Stop(); |
Ich hoffe es ist nicht zu wirr.
Gruß lulu
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!