Программирование
Веб программирование

Работа с файлами на C#

 
 

Для работы с файлами в C# есть пространство имен System.IO. Сейчас рассмотрим на примере основные методы для работы с файлами на C#.

На форму кинь 4 кнопки и текстовое поле:

  • button1 свойство Text = Создать файл 
  • button2 свойство Text = Удалить файл 
  • button3 свойство Text = Записать текст в файл 
  • button4 свойство Text = Прочитать файл 
  • и в текстовом поле свойство Multiline = true (включение многострочного режима)

Вот что должно получиться:

Вот код с пояснением:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO; //Подключаем пространство имен для работы с файлами

namespace Files
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            FileInfo file = new FileInfo("vbbook.txt");
        }


        /**
         * Создание файлов
         */
        private void button1_Click(object sender, EventArgs e)
        {
            FileInfo file = new FileInfo("vbbook.txt");
            if (file.Exists == false) //Если файл не существует
            {
                file.Create(); //Создаем
            }
            else MessageBox.Show("Файл уже создан!");
        }

        /**
         * Удаляем файл 
         */
        private void button2_Click(object sender, EventArgs e)
        {
            FileInfo file = new FileInfo("vbbook.txt");
            if (file.Exists == true) //Если файл существует
            {
                file.Delete(); //Удаляем
            }
            else MessageBox.Show("Файла не существует!!");
        }

        /**
         * Записать текст в файл
         */ 
        private void button3_Click(object sender, EventArgs e)
        {
            StreamWriter write_text;  //Класс для записи в файл
            FileInfo file = new FileInfo("vbbook.txt");
            write_text = file.AppendText(); //Дописываем инфу в файл, если файла не существует он создастся
            write_text.WriteLine(textBox1.Text); //Записываем в файл текст из текстового поля
            write_text.Close(); // Закрываем файл
        }

        private void button4_Click(object sender, EventArgs e)
        {
            StreamReader streamReader = new StreamReader("vbbook.txt"); //Открываем файл для чтения
            string str = ""; //Объявляем переменную, в которую будем записывать текст из файла

            while (!streamReader.EndOfStream) //Цикл длиться пока не будет достигнут конец файла
            {
                str += streamReader.ReadLine(); //В переменную str по строчно записываем содержимое файла
            }

            textBox1.Text = str;
        }
    }
}


Есть вопросы? Спроси на нашем форуме!!
Гена [16.05.2012 20:34]

а где у нас создается этот самый файл?

Джон [16.05.2012 23:47]

Спасиб

Сергей [21.10.2012 21:45]

В папке с проектом.

Ingush 06 [28.10.2012 21:23]

Помогло реально. Спасибо автору.

Гузель [13.11.2012 13:33]

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

Алексей(alex13sh) [13.11.2012 16:37]

Гузель, мож один раз открыла и заббыла закрыть??

Гладиатор [16.11.2012 03:36]

Нет, он(-а), Гузель, права. Это приложение не может одноременно работать с Windows Explorer. Наверное, каким-то образом, можно избежать таких ошибок с помощью исключений...

Кулхацкер [16.11.2012 06:16]

try {
// -- действия открытия файла
} catch exception ex {
MessageBox.Show(ex.what);
}

оттуда уже и плясать

Кулхацкер [16.11.2012 09:59]

Нее... не так. Вот так:

try {
// -- действия открытия файла
} catch ( exception ex ) {
MessageBox.Show(ex.what());
}

Ark [18.12.2012 00:27]

>file.Create(); //Создаем
Этот создаёт файл и открывает поток, но не закрывает его из-за чего вылетает иксепшн при попытке открыть его заново для записи текста.
Исправить можно, написав
file.Create().Close();
Но, вообще, сама функция "Создать Файл" бессмысленна, так как функция "Записать Файл" итак создаёт его сама.

Ark [18.12.2012 00:58]

>str += streamReader.ReadLine();
Эта конструкция некорректно съедает все переносы строк в файле.
Надо:
str += streamReader.ReadLine() + "n";

Ark [18.12.2012 01:00]

Класс FileInfo в таком коде не нужен - намного удобнее File. Возня со стримами тоже не нужна. Всё пишутся намного проще:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
const string fileName = "vbbook.txt";

private void createFileButton
Click(object sender, EventArgs e) {
if (!File.Exists(fileName)) {
File.Create(
fileName).Close();
} else {
MessageBox.Show("Файл уже существует!", "Такие дела", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}

private void deleteFileButtonClick(object sender, EventArgs e) {
if (File.Exists(
fileName)) {
File.Delete(fileName);
} else {
MessageBox.Show("Файл НЕ существует!", "Такие дела", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}

private void writeFileButton
Click(object sender, EventArgs e) {
File.WriteAllText(fileName, textBox.Text);
}

private void readFileButton
Click(object sender, EventArgs e) {
if (File.Exists(fileName)) {
textBox.Text = File.ReadAllText(
fileName);
} else {
MessageBox.Show("Файл НЕ существует!", "Такие дела", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
}

brova [13.02.2013 17:42]

При запуске приложения
Attempt to access the method failed: System.IO.FileInfo..ctor(System.String)

ReDoX170 [13.02.2013 19:24]

brova, к какому то методу нет доступа и не вызвался конструктор по умолчанию(.ctor)



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.