2013-03-09 6 views
2

Я хочу удалить последние 10 символов файла. Скажем, строка "hello i am a c# learner" - это данные внутри файла.удалить последние 10 символов файла

Я просто хочу, чтобы этот файл был "hello i am a ". Последние 10 символов файла, который является строкой "c# learner", должны быть удалены внутри файла.

Решение:

  1. читать весь файл в строку и удалить эти последние 10 символов и записать обратно строку (но этот подход терпит неудачу, когда размер файла слишком велик, говорит около 200 МБ файла и даже ненужный способ читать весь файл, когда нам нужны только последние 10 символов. Поэтому я не мог попробовать этот подход).

  2. Я думал открыть файл в режиме записи и установить положение курсора примерно так: file.seek(-10,SeekOrigin.End) и написать пустые байты file.writebye((byte)((char)' '));

Но он ничего не пишет в файл.

Может ли кто-нибудь сказать мне лучший способ приблизиться к нему вместо того, чтобы читать весь файл в строку.

ПРИМЕЧАНИЕ Я использую C# сделать это

+0

Если файл является то, что маленьким, чтение файла в строку является прекрасно решением, особенно с тем, как буферными работами. Это проще и проще. Если бы ваш файл был действительно большим, теперь это была бы другая история. –

+0

@BenjaminGruenbaum Я просто дал образец. Файл может быть также размером 200 МБ. Это зависит от выбора пользователя. благодаря – niko

ответ

1

Получить размер файла (используя FileInfo), откройте файл (с помощью FileStream) и установите его длину до нужного размера.

1

Возможно, вы могли бы попробовать что-то подобное?

yourString = yourString.Remove(yourString.Length -10); 
6

Если путь_к_файл находится в текстовом поле:

FileStream fs = new FileStream(textBox1.Text, FileMode.Open, FileAccess.ReadWrite); 
fs.SetLength(fs.Length - 10); 
fs.Close();