سؤال

كيف يمكنني قراءة صفيف بايت RAW من أي ملف، وكتابة صفيف البايت مرة أخرى إلى ملف جديد؟

هل كانت مفيدة؟

المحلول

(تحرير: لاحظ أن السؤال تغير؛ لم يذكر byte[] في البداية؛ يرى مراجعة رقم 1)

نحن سوف، File.Copy قفز إلى الذهن؛ ولكن خلاف ذلك هذا يبدو وكأنه Stream سيناريو:

    using (Stream source = File.OpenRead(inPath))
    using (Stream dest = File.Create(outPath)) {
        byte[] buffer = new byte[2048]; // pick size
        int bytesRead;
        while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
            dest.Write(buffer, 0, bytesRead);
        }
    }

نصائح أخرى

byte[] data = File.ReadAllBytes(path1);
File.WriteAllBytes(path2, data);

هل تعرف عن textreader. و كتاب نص, ونحفهم streamreader. و كتاب Streamب أعتقد أن هذه سوف تحل مشكلتك لأنها تتعامل مع الترميزات، ولا يعرف BinaryReader عن الترميزات أو حتى النص، فهي تهتم فقط بالبايت.

كيفية قراءة النص من ملف

كيفية كتابة النص إلى ملف

هذه مقدمة ممتازة إلى ملف IO والترفيه.

إضافة إجابة محدثة،

using (var source = File.OpenRead(inPath))
{
    using (var dest = File.Create(outPath))
    {
        source.CopyTo(dest);
    }
}

يمكنك اختياريا تحديد حجم المخزن المؤقت

using (var source = File.OpenRead(inPath))
{
    using (var dest = File.Create(outPath))
    {
        source.CopyTo(dest, 2048); // or something bigger.
    }
}

أو يمكنك تنفيذ العملية على موضوع آخر،

using (var source = File.OpenRead(inPath))
{
    using (var dest = File.Create(outPath))
    {
        await source.CopyToAsync(dest);
    }
}

والتي ستكون مفيدة عندما يكون للخيط الرئيسي القيام بعمل آخر، مثل تطبيقات WPF و Windows Apps.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top