[Nemerle] Jak skopiować plik do końca

warlock

Wymagana wersja kompilatora: 0.2.0
Język: Nemerle
Strona domowa kompilatora (i dokumentacji): www.nemerle.org
Interfejs programu: Konsola

using System;
using System.IO;
class CopyFrom
{
    public static Main () : void
    {
        def ProgType = array ["|","/","-","\\"];
        Console.WriteLine("Ścieżka pliku źródlowego");
        def cfrom = Console.ReadLine();
        Console.WriteLine("Ścieżka docelowa: ");
        def cto = Console.ReadLine();
        def FsFrom = FileStream(cfrom, FileMode.Open, FileAccess.Read, FileShare.Read);
        when(File.Exists(cto)) {
            Console.WriteLine("Plik docelowy istnieje - sprawdzam, czy jest skopiowany do końca...");
        }
        def FsTo = FileStream(cto, FileMode.Append);
        FsFrom.Position = FsTo.Length;
        mutable BrFrom = BinaryReader(FsFrom);
        mutable BrTo = BinaryWriter(FsTo);
        mutable Progress = 0;
        mutable BL = 6144; // wielkość bufforu - 60 kB
        Console.WriteLine("Kopiuje plik {0} do {1}",cfrom,cto);
        while (FsFrom.Length != FsFrom.Position) {
            when ((Convert.ToInt32(FsFrom.Length) - Convert.ToInt32(FsFrom.Position)) < BL) {
                BL = Convert.ToInt32(FsFrom.Length) - Convert.ToInt32(FsFrom.Position);
            }
            BrTo.Write(BrFrom.ReadBytes(BL));
            when(Progress == 3) {
                Progress = 0;
            }
            Console.Write("\b");
            Console.Write(ProgType[Progress]);
            ++Progress;
        }
        BrTo.Close();
        BrFrom.Close();
        Console.WriteLine("\bPlik został skopiowany!");
    }
}
FAQ

1 komentarz

Chyba powinieneś zrobić osobny dział Nemerle albo powinien powstać jakiś dział .NET bo z pogranicza troche nie pasuje :/