ASP.NET MVC ile Dosya okuma ve yazma işlemleri

14 May

Web ortamında bazı durumlarda dosyalarla işlem gerektiren durumlar olabilmektedir. Örneğin bir HTML sayfa, CSS dosyası, Text dosya veya şu anda aklıma gelmeyen bir çeşit dosyanın içeriğinin online olarak değiştirilmesi gibi.

Bu işlemi, ASP.NET MVC ortamında nasıl gerçekleştirebileceğimizi inceleyelim. Bu işlem için dosyalarımızın bulunduğu bir dizini belirleyip içindeki dosyaları kullanıcının önüne döküp, istediği gibi düzenlemesini sağlamaya çalışalım.

Dizin içindeki dosyaları kullanıcıya veren bir model sınıfı oluşturalım.


public class PersonelFiles
{
      public string FileName { get; set; }
}

Bu model sınıfından üretilen bir view oluşturmak için File controller içerisine Files adında bir action metod oluşturalım.


public class FileController : Controller
{
      public ActionResult Files()
      {
         DirectoryInfo directory = new DirectoryInfo(Server.MapPath("~/Files"));

         var personelFiles = new List<PersonelFiles>();

         foreach (var item in directory.GetFiles("*.txt"))
         {
             personelFiles.Add(new PersonelFiles { FileName = item.Name });
         }

         return View(personelFiles);
     }
}

Files dizinindeki *.txt uzantılı dosyalarımızı listeleyecek bir view artık bu action metod üzerinden oluşturulabilir. Files() action metoduna sağ tıklayıp create view diyerek ilerleyebiliriz.

Şimdi de dosyaların içeriğini editleme işlemini gerçekleştirmek için, düzenle linkine tıklandığında dosya içeriğini bir kutu içerisinde bize sunacak action metodu yazalım.

Metod adı Edit şeklinde olacaktır.


public ActionResult Edit(string id)
{
     if (!string.IsNullOrEmpty(id))
     {
         StreamReader reader = new StreamReader(Server.MapPath("~/Files/") + id, System.Text.Encoding.Default);

         var content = new FileEditFormView()
         {
             FileContent = reader.ReadToEnd(),
             FileName = id
         };

         reader.Close();
         reader.Dispose();

         return PartialView("_Edit", content);
     }

     return View("FileNotFound");

}

Edit modtodu, düzenle linkine tıkladığımızda linkteki id parametresiyle dosya adını Edit metoduna verecektir. dosya içeriği okundukran sonra  FileEditFormView şeklinde karşımıza gelecektir.

Kaydet butonuna bastığımızda da POST metodu ile gönderdiğimizde de yazma işlemini gerçekleştireceğiz.


[HttpPost]
public ActionResult Edit(FileEditFormView form)
{
      StreamWriter writer = new StreamWriter(Server.MapPath("~/Files/") + form.FileName, false, System.Text.Encoding.Default);

      writer.Write(form.FileContent);
      writer.Close();
      writer.Dispose();

      return RedirectToAction("Files");
}

Bu şekilde işlem tamamlanmış olacaktır.

Düzenleme Geçmişi:

Başlık düzenlendi 25.09.2013
İçerik düzenlendi 25.09.2013

5 thoughts on “ASP.NET MVC ile Dosya okuma ve yazma işlemleri

  1. Merhaba Bayram,
    Anlatım güzel ama kısa olmuş 😉 eline sağlık. Benim sormak istediğim düzenle yerine aç isimli bir işlem oluştursak ilgili dosyayı ilgili programla nasıl açtırabiliriz.

  2. @Zafer Merhaba,
    Yorumun için teşekkürler. ActionResult yerine FileResult kullanarak istediğin dosyayı elde edebilirsin. Dosya direkt olarak Notepad ile açılmayacaktır, dosyayı nereye kaydedelim diye soracaktır.

    • Teşekkürler @mehmet, JQuery sadece başlıkta kalmış. Başlığı yeniden düzenledim. Aslında yazıda jquery ile asenkron şekilde POST ve GET işlemlerini gerçekleştirme niyetim vardı. Sonradan vazgeçince başlık jQuery olarak kalmış.

  3. Merhaba,
    Anlatımınız için teşekkürler. Benim sormak istediğim “~/Files/” gibi bir dosya yerine “192.168.1.105/Files” gibi bir yerden dosya okumak istiyorum. Bunun için ne yapabilirz?

Comments are closed.