C#, FileStream, odczytywanie z pliku

C#, FileStream, odczytywanie z pliku
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 5 lat
  • Postów:243
0
Kopiuj
 using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace Do_testu
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream fs = new FileStream("C:\\Users\\Mikołaj Waśniewski\\Desktop\\Do testu\\plik.txt",FileMode.Open);
            byte[] buffer = new byte[500];
            fs.BeginRead(buffer, 0, 32, new AsyncCallback(CompleteReading),fs);
            string text = Encoding.ASCII.GetString(buffer);
            Console.WriteLine(text);
            Console.ReadKey();
        }

        private static void CompleteReading(IAsyncResult ar)
        {
            Console.WriteLine("Reading complete");
        }
    }
}

Dlaczego w tej linii

Kopiuj
FileStream fs = new FileStream("C:\\Users\\Mikołaj Waśniewski\\Desktop\\Do testu",FileMode.Open); 

wywala mi wyjątek: Additional information: Odmowa dostępu do ścieżki „C:\Users\Mikołaj Waśniewski\Desktop\Do testu”.

edytowany 2x, ostatnio: Mikilll
Aventus
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
1

Podaj nazwę pliku wraz z rozszerzeniem, np. "MyFile.txt". Sprawdź rownież czy plik nie jest oznaczony jako tylko do odczytu.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 5 lat
  • Postów:243
0

Dobra, dzięki. Już poprawiłem. Faktycznie wystarczyło dodać nazwę pliku wraz z rozszerzeniem. Teraz natomiast program nic nie zapisuje do stringa. Wypisuje tylko napis "Reading complete". Co może być kłopotem?

SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:około rok
0

Bo prawdopodobnie dekodujesz tablicę bajtów na string, zanim cokolwiek zostanie wczytane do tej tablicy.

MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 5 lat
  • Postów:243
0

Hm. To co by tam trzeba było zrobić? Jest jakaś metoda żeby poczekać aż operacja asynchroniczna zostanie zakończona?

edytowany 1x, ostatnio: Mikilll
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:dzień
0

Jest i nawet z niej korzystasz oO Twoje CompleteReading przecież wykonuje się przecież zaraz PO zakończeniu asynchronicznego odczytu. Nawet nazwałeś tę metodę odpowiednio.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.