في C #، كيفية اخترح سلسلة نصية إلى ملف دون تغيير الترميز الأصلي

StackOverflow https://stackoverflow.com/questions/2224381

  •  19-09-2019
  •  | 
  •  

سؤال

أرغب في Pred-Pend (إلى البداية) ملف بسلسلة في C #. حاليا، أنا فقط استبدال محتوى الملف مع سلسلة بلدي بالإضافة إلى المحتوى الأصلي.لا أريد أن أفعل ذلك، لأن كتاب التبسيط سوف يفوض الأحرف المشفرة.

هل هناك طريقة لاستبدال ملف نصي مسبق دون تغيير الترميز الأصلي (لكل حرف).

يجب أن تكون هناك وسيلة.

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

المحلول

الرمز في أسفل هذه الصفحة يبدو أن تتيح لك قراءة ملف داخل، الاحتفاظ بالترميز ثم اكتبه مرة أخرى باستخدام نفس الترميز. يجب أن تكون قادرا على تعديل هذا للقيام بما تحتاج إليه.

نصائح أخرى

ترميز النص هو شيء مضحك. وبعد إذا كنت تكتب التعليمات البرمجية التي سيتم تفسيرها كما ترميز الشخصيات, ، يجب إخبار المترجم (أو قد يفترض أنه) كيف يجب ترتيب البايتات لتمثيل أحرف معينة. إذا كان برنامجك أمرا ذراعا لترميز الملفات التي ستتعامل بها، فماذا تنوي الإشارة إلى المحول البرمجي كيف ينبغي أن تفسر مجموعة بايت في هذا الملف؟

يمكنك التفكير في قراءة الشخصيات كمدفق من بايت بدلا من تيار من الشخصيات إذا كنت لا تعرف كيفية إرشاد المحول البرمجي لتفسير تلك البايتات (أي أنت لا تعرف ما سيتم استخدام الترميز في وقت التشغيل). في هذه الحالة، عليك أن تأمل في أن تكون الشخصيات الأساسية التي اخترتها إلحاقها إلى بداية الملف معترف بها عالميا في أي ترميز؛ هذا لأنك سوف تكون ملء بايت و لا الشخصيات إلى بداية الملف.

فقط اقرأ الملف دون فك تشفير البايتات. وعليك اختيار ترميز رأسك - يبدو أن ASCII هو الاختيار الأكثر أمانا في وضعك.

const String fileName = "test.file";
const String header = "MyHeader";

var headerBytes = Encoding.ASCII.GetBytes(header);
var fileContent = File.ReadAllBytes(fileName);

using (var stream = File.OpenWrite(fileName))
{
    stream.Write(headerBytes, 0, headerBytes.Length);
    stream.Write(fileContent, 0, fileContent.Length);
}

لاحظ أن الرمز يعمل مباشرة على الدفق ولا يستخدم TextReader أو TextWriter (هذه هي الفئات الأساسية المجردة StreamReader و StreamWriter). يمكنك استخدام BinaryReader و BinaryWriter لتبسيط الوصول إلى الدفق إذا كان عليك التعامل مع مهام المعسكر، فما عليك سوى قراءة وكتابة صفيف.

لقد وجدت هذا الذي دعني أحصل على الترميز الصحيح للملف:http://www.personalmicrocosms.com/pages/dotnettips.aspx؟c=15&t=17.

ثم يمكنني استخدام هذا الترميز في مجال Stream.

هل هو آمن للاستخدام؟

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