Witam.
Piszę kod do przesyłania plików i mam pewien problem.
To kod:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace BibliotekiSiec { public class WysylaczPliku { int _wielkoscPakietu = 100000; int wielkoscPakietuKB { get { return _wielkoscPakietu / 1024; } set { _wielkoscPakietu = value * 1024; } } public object locketWyslano = new object(); public object locketRazem = new object(); public long wyslano = 0; public long razem = 0; public bool czyOK = false; public void send(ref BinaryWriter bw, String file) { czyOK = false; lock (locketWyslano) wyslano = 0; lock (locketRazem) razem = 0; FileInfo fileinf = new FileInfo(file); using (BinaryReader br = new BinaryReader(fileinf.OpenRead())) { lock (locketRazem) razem = fileinf.Length; while (true) { bool czyOstatniPakiet = false; var pakiet = br.ReadBytes(_wielkoscPakietu); if (br.PeekChar() == -1) czyOstatniPakiet = true; lock (locketWyslano) wyslano += pakiet.Length; bw.Write(czyOstatniPakiet); bw.Write(pakiet.Length); bw.Write(pakiet, 0, pakiet.Length); if (czyOstatniPakiet) { czyOK = true; return; } } } } } }
mam ciągle błąd z br.peekChar()
To jest błąd:
Wystąpił nieobsługiwany wyjątek typu „System.ArgumentException” w mscorlib.dll Dodatkowe informacje: Bufor bajtów wyjściowych jest za mały, aby pomieścił znaki dekodowane, rezerwa 'System.Text.DecoderReplacementFallback' kodowania 'Unicode (UTF-8)'.