7 ارسال در این موضوع قرار دارد

file_versioning-control.png

 

کدهای زیر برای کار با فایل و دایرکتوری در زبان برنامه‌نویسی C# استفاده می‌شود. مثال‌ها را در پست‌های بعدی اضافه خواهم کرد. 

توجه: قبل از استفاده از دستورات زیر، کدهای زیر را در خط اول برنامه خود وارد کنید:

using System;
using System.IO;

هنگام شروع، ظاهر کد شما باید اینگونه به نظر برسد:

using System;
using System.IO;

namespace ProjectName
{
    class CName
    {
        public static void Main()
        {

        }
    }
}

قبل از شروع

 

قبل از شروع، کدهای زیر را در کلاس Main() خود وارد کنید:

string filePath = @"PATH";

کلمه PATH را به آدرس فایل خود تغییر دهید. برای مثال: 

string filePath = @"C:\TextFile.txt";

این کار آدرس شما را به عنوان مقدار متغیر filePath که از نوع string هست ذخیره می‌کند. 

 

سپس دستور زیر را وارد کنید:

FileInfo finf = new FileInfo (filePath);

نام finf را به نام مورد نظر خود تغییر دهید. 

 

 

دریافت مشخصات فایل

پارامترهای زیر برای دریافت اطلاعات فایل از طریق FileInfo استفاده می‌شود:

  • Name : نام فایل را نمایش می‌دهد
  • FullName : نام فایل را به همراه دایرکتوری نشان می‌دهد
  • CreationTime : زمان ایجاد شدن فایل را نمایش می‌دهد
  • CreationTimeUtc : زمان ایجاد شدن فایل را به زمان جهانی (UTC) نمایش می‌دهد
  • Directory : نام دایرکتوری که فایل در آن وجود دارد را نمایش می‌دهد.
  • Exists : وجود داشتن یا نداشتن فایل را مشخص می‌کند (خروجی به صورت Boolean است)
  • Extension : پسوند فایل را نمایش می‌دهد
  • IsReadOnly : مشخص می‌کند که آیا قابلیت ویرایش فایل وجود دارد یا خیر (خروجی به صورت Boolean است)
  • LastAccessTime : زمان آخرین دسترسی به فایل را نمایش می‌دهد
  • LastAccessTimeUtc : زمان آخرین دسترسی به فایل را به زمان جهانی (UTC) نمایش می‌دهد
  • LastWriteTime : زمان آخرین ویرایش ایجاد شده در فایل را نمایش می‌دهد
  • LastWriteTimeUtc : زمان آخرین ویرایش ایجاد شده در فایل را به زمان جهانی (UTC) نمایش می‌دهد
  • Length : حجم فایل را نمایش می‌دهد
پارامترها را با فرمول زیر استفاده کنید:
finf.ParameterName

برای مثال:

Console.WriteLine(finf.Name);

 

توابع کار با فایل

 

توجه: قبل از ادامه خواندن، مراحل «قبل از شروع» را با نام و آدرسی دیگر برای متغیرها تکرار کنید. این کار برای داشتن یک مقصد برای کپی کردن فایل لازم است.

 

 

کپی کردن فایل از دایرکتوری به دایرکتوری دیگر

finf.CopyTo(destinationPath);

کپی کردن فایل از دایرکتوری دیگر + دادن اجازه برای Overwrite کردن

finf.CopyTo(destinationPath,True);

ایجاد فایل

finf.Create();

ایجاد فایل txt

finf.CreateText();

رمزنگاری کردن فایل

finf.Encrypt();

رمزگشایی کردن فایل

finf.Decrypt();

حذف فایل (فایل به طور دائمی حذف شده و به Recycle Bin منتقل نخواهد شد)

finf.Delete();

انتقال (Cut) فایل به یک دایرکتوری دیگر

finf.MoveTo(destinationPath);

ایجاد فایل Text

finf.OpenText();

ایجاد FileStream با مجوز Read-Only

finf.OpenRead();

ایجاد FileStream با مجوز Write-Only

finf.OpenWrite();

در پست‌های بعدی مثال‌های مربوط به این آموزش و قسمت‌های بعدی را قرار خواهم داد. سوالات خود را از طریق پیام خصوصی برای من ارسال کنید. تا تمام کامل آموزش، هیچگونه پستی در این تاپیک ارسال نکنید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

مثال 1 : این برنامه یک کلمه را از شما گرفته و یک فایل با آن نام به همراه فرمت .txt در Desktop ایجاد کرده و بعد آن را در Documents کپی می‌کند:

using System;
using System.IO;


namespace ConsoleApplication2
{
    class CName
    {
        public static void Main()
        {
            Console.Write("Please enter your text file name (without .txt format): ");
            string FileName = Console.ReadLine();


            string path = @"C:\Users\TrypL3\Desktop\" + FileName + ".txt";
            FileInfo fInf = new FileInfo(path);


            fInf.CreateText();


            string destDir = @"C:\Users\TrypL3\Documents\" + FileName + ".txt";
            fInf.CopyTo(destDir);
            
            Console.WriteLine("Done!");
            Console.ReadKey();
        }
    }
}

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

با سلام بر اساتید

فرض کنید میخواهیم کدی بنویسیم که از داخل درایو D تمام فایل متنی را  بگیره و کپی کنه در  درایو E  چطور باید این را کد نویسی کنیم؟ ایا با همین توابع io  باید کار کرد؟ یا توابع خاص دیگه داره؟ لطفا اگر می توانید  کد یا شبه کد یا نمونه کدی هم بدهید.

سپاس

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 36 دقیقه قبل، elecomp گفته است :

با سلام بر اساتید

فرض کنید میخواهیم کدی بنویسیم که از داخل درایو D تمام فایل متنی را  بگیره و کپی کنه در  درایو E  چطور باید این را کد نویسی کنیم؟ ایا با همین توابع io  باید کار کرد؟ یا توابع خاص دیگه داره؟ لطفا اگر می توانید  کد یا شبه کد یا نمونه کدی هم بدهید.

سپاس

با سلام دوست عزیز

        System.IO.Directory.Move(@"d:\test\", @"e:\private");
-------------------------------------
string[] files = Directory.GetFiles(@"d:\", "*.txt");foreach (string file in files)
{
File.Copy(file, Path.Combine(@"E:\", Path.GetFileName(file)) , true);
}

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ممنون دوست عزیز: کد را کامپایل کردم  یک  ارور داد!! علت چی هست !! بنظرتان؟ یکسری فایل txt توی درایو d درست کردم ولی  هیچ فایلی توی درایو e کپی نشده!!

6.PNG

لطفا منبع در مورد کار با فایل  اگر میشناسید لطفا معرفی کنید

سپاس

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 13 ساعت قبل، elecomp گفته است :

ممنون دوست عزیز: کد را کامپایل کردم  یک  ارور داد!! علت چی هست !! بنظرتان؟ یکسری فایل txt توی درایو d درست کردم ولی  هیچ فایلی توی درایو e کپی نشده!!

6.PNG

لطفا منبع در مورد کار با فایل  اگر میشناسید لطفا معرفی کنید

سپاس

سلام داداش

خوب گیر میده دیگه این دوتا تکه کد مجزا از هم هستن هر کدوم کاری رو میکنه یکی برا کپی هس اون یکی برا جابجایی

در کد شما هم مشکلاتی دارید  به این کدا توجه کنید

copy file &directory

// Simple synchronous file copy operations with no user interface.
// To run this sample, first create the following directories and files:
// C:\Users\Public\TestFolder
// C:\Users\Public\TestFolder\test.txt
// C:\Users\Public\TestFolder\SubDir\test.txt
public class SimpleFileCopy
{
    static void Main()
    {
        string fileName = "test.txt";
        string sourcePath = @"C:\Users\Public\TestFolder";
        string targetPath =  @"C:\Users\Public\TestFolder\SubDir";

        // Use Path class to manipulate file and directory paths.
        string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
        string destFile = System.IO.Path.Combine(targetPath, fileName);

        // To copy a folder's contents to a new location:
        // Create a new target folder, if necessary.
        if (!System.IO.Directory.Exists(targetPath))
        {
            System.IO.Directory.CreateDirectory(targetPath);
        }

        // To copy a file to another location and 
        // overwrite the destination file if it already exists.
        System.IO.File.Copy(sourceFile, destFile, true);
        
        // To copy all the files in one directory to another directory.
        // Get the files in the source folder. (To recursively iterate through
        // all subfolders under the current directory, see
        // "How to: Iterate Through a Directory Tree.")
        // Note: Check for target path was performed previously
        //       in this code example.
        if (System.IO.Directory.Exists(sourcePath))
        {
            string[] files = System.IO.Directory.GetFiles(sourcePath);

            // Copy the files and overwrite destination files if they already exist.
            foreach (string s in files)
            {
                // Use static Path methods to extract only the file name from the path.
                fileName = System.IO.Path.GetFileName(s);
                destFile = System.IO.Path.Combine(targetPath, fileName);
                System.IO.File.Copy(s, destFile, true);
            }
        }
        else
        {
            Console.WriteLine("Source path does not exist!");
        }

        // Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

اینم برا جابجایی هس من کامپایل کردم مشکلی ندارن

// Simple synchronous file move operations with no user interface.
public class SimpleFileMove
{
    static void Main()
    {
        string sourceFile = @"C:\Users\Public\public\test.txt";
        string destinationFile = @"C:\Users\Public\private\test.txt";

        // To move a file or folder to a new location:
        System.IO.File.Move(sourceFile, destinationFile);

        // To move an entire directory. To programmatically modify or combine
        // path strings, use the System.IO.Path class.
        System.IO.Directory.Move(@"C:\Users\Public\public\test\", @"C:\Users\Public\private");
    }
}

برای پاک کردن

// Simple synchronous file deletion operations with no user interface.
// To run this sample, create the following files on your drive:
// C:\Users\Public\DeleteTest\test1.txt
// C:\Users\Public\DeleteTest\test2.txt
// C:\Users\Public\DeleteTest\SubDir\test2.txt

public class SimpleFileDelete
{
    static void Main()
    {
        // Delete a file by using File class static method...
        if(System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
        {
            // Use a try block to catch IOExceptions, to
            // handle the case of the file already being
            // opened by another process.
            try
            {
                System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
            }
            catch (System.IO.IOException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
        }

        // ...or by using FileInfo instance method.
        System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\Users\Public\DeleteTest\test2.txt");
        try
        {
            fi.Delete();
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
        }

        // Delete a directory. Must be writable or empty.
        try
        {
            System.IO.Directory.Delete(@"C:\Users\Public\DeleteTest");
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
        }
        // Delete a directory and all subdirectories with Directory static method...
        if(System.IO.Directory.Exists(@"C:\Users\Public\DeleteTest"))
        {
            try
            {
                System.IO.Directory.Delete(@"C:\Users\Public\DeleteTest", true);
            }

            catch (System.IO.IOException e)
            {
                Console.WriteLine(e.Message);
            }
        }

        // ...or with DirectoryInfo instance method.
        System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\Users\Public\public");
        // Delete this dir and all subdirs.
        try
        {
            di.Delete(true);
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
        }

    }
}

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ممنون دوست عزیز: من کد زیر تست کردم و درست کار کرد ولی یک سوال: اگر بخواهیم بگیم که از همه درایو ها اعم از c , d و.. تمام فایل های txt را بگیر  و در درایو g کپی کن : کد را به چه صورت باید تغییر بدهیم؟

در ضمن مشکل دیگه داره این هست که زمانیکه فایل ها توی پوشه ای در درایو d باشه کپی نمی کند!!! باید حتما بیرون پوشه باشند!! حالت روت مثلا !!من میخوام توی درایو d  کلا سرچ کند و وابسته به پوشه نباشد!

cc.PNG

سپاس

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری