Never underestimate the power of Passion!

Monday, 20 March 2017

On 21:22 by Vardan Kumar in    15 comments
File Versioning C#

File versioning, saving file with unique file name in c#

File versioning allows a user to have several versions of a file simultaneously at a particular path. Not only it intimates a user of which is the latest version i.e generated at a later stage or an older version but also provides a unique file name in the same directory.

For example....

Suppose a report generation application is developed which saves a user-readable file as an output, as discussed in earlier posts also an efficient GUI(Graphical user interface) is the most interactive one i.e. a GUI in which a user feels to have control over the application. In such an application a user is generally provided with the privilege to select his/her desired path. It is a general tendency of a computer operating individual to select same path as well as name each time he/she wants to generate the report. Now suppose user chooses a file name as cspassion.xlsx and the same file name already exists at that path, so an efficient application would save the latest version of report as cspassion(1).xlsx or cspassion(2).xlsx to avoid exception or prompting user to select if he/she wants to replace the previous version of file or not, also this would take the control from your application to the operating system which should generally be avoided as much as possible.

Logic

  • First of all user selected file name or path is sent as an argument to the method fetching unique file path or creating file versions.
  • Now we will check if the file already exists at that directory or not
    • If not then return that file path and save the file with user selected file name at his/her desired path.
    • If yes then continue with the version generation.
  • Now split and store directory,file name as well as extension in different identifiers.
  • Initialize number as 1,if you want to display (2) as file version after first version and initialize to 0 if you want it as (1) after first version.
  • Now we'll check if a version after initial version is generated using regular expression match
    • If it matches then we'll extract file name from group 1 and number from group 2.
  • Now we have number as well as file name we'll loop through while the file exists in that path.
    • We'll increment number by 1 in each iteration
    • Format the string as filename,(number) and extension. 
  • Return the file path and save the workbook.
I have generated five versions of same file named cspassion for reference in current directory. Refer to image below


File Versioning, unique file path c#
File Versioning C#

Source Code

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Oracle.DataAccess.Client;
using System.Configuration;
using System.Text.RegularExpressions;
using System.Xml;
using System.IO;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
string s_oRcConnectionString = null; //Click here to know how to set dynamic connection string c#
        ToolTip tt = new ToolTip();
        string uniquepath=String.Empty;
private void btn_Save(object sender, EventArgs e)
{
             xlWorkbook.SaveAs(uniquepath);
}
private void btn_Browse_Click_1(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();// using save file dialog
            saveFileDialog1.Filter = "Excel|*.xlsx";
            saveFileDialog1.Title = "Save Excel report";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            lbl_Path.Text = saveFileDialog1.FileName;
            tt.SetToolTip(lbl_Path, lbl_Path.Text);   // click here to read how to set tool tip for controls
            lbl_Path.Visible = true;
            string path=lbl_Path.Text;
            uniquepath=GetUniqueFilePath(path);
            
        }              
                    
public static string GetUniqueFilePath(string filepath)
        {
            if (File.Exists(filepath))
            {
                string fold = Path.GetDirectoryName(filepath);
                string filename = Path.GetFileNameWithoutExtension(filepath);
                string extension = Path.GetExtension(filepath);
                int number = 1;

                Match regex = Regex.Match(filepath, @"(.+) \((\d+)\)\.\w+");

                if (regex.Success)
                {
                    filename = regex.Groups[1].Value;
                    number = int.Parse(regex.Groups[2].Value);
                }

                do
                {
                    number++;
                    filepath = Path.Combine(folder, string.Format("{0} ({1}){2}", filename, number, extension));
                }
                while (File.Exists(filepath));
            }

            return filepath;
        }
    }
}

15 comments:

  1. Replies
    1. IEEE Final Year Project centers make amazing deep learning final year projects ideas for final year students Final Year Projects for CSE to training and develop their deep learning experience and talents.

      IEEE Final Year projects Project Centers in India are consistently sought after. Final Year Students Projects take a shot at them to improve their aptitudes, while specialists like the enjoyment in interfering with innovation.

      corporate training in chennai corporate training in chennai

      corporate training companies in india corporate training companies in india

      corporate training companies in chennai corporate training companies in chennai

      I have read your blog its very attractive and impressive. I like it your blog. Digital Marketing Company in Chennai

      Delete
  2. Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a .Net developer learn from Dot Net Training in Chennai. or learn thru Dot Net Training in Chennai. Nowadays Dot Net has tons of job opportunities on various vertical industry.
    or Javascript Training in Chennai. Nowadays JavaScript has tons of job opportunities on various vertical industry.

    ReplyDelete
  3. This page revolves around Muzhiwan apk and Muzhiwan app download to reveal everything about Muzhiwan app store

    ReplyDelete
  4. I appreciate that you produced this wonderful article to help us get more knowledge about this topic.
    I know, it is not an easy task to write such a big article in one day, I've tried that and I've failed. But, here you are, trying the big task and finishing it off and getting good comments and ratings. That is one hell of a job done!


    Selenium training in bangalore
    Selenium training in Chennai
    Selenium training in Bangalore
    Selenium training in Pune
    Selenium Online training

    ReplyDelete
  5. Have you ever played roulette? Well, come and play again and win a lot more than you can imagine. best roulette table Do not wait and win constantly.

    ReplyDelete
  6. Great blog thanks for sharing Leaders in the branding business - Adhuntt Media is now creating a buzz among marketing circles in Chennai. Global standard content creation, SEO and Web Development are the pillars of our brand building tactics. Through smart strategies and customer analysis, we can find the perfect audience following for you right now through Facebook and Instagram marketing.
    social media marketing company in chennai

    ReplyDelete
  7. Nice blog thanks for sharing Wondering where to buy healthy garden plants in Chennai for your home? Karuna Nursery Gardens offers you with tons of variety and organic choices suitable for our tropical climate. Make your garden fabulous with Karuna Nursery.
    plant nursery in chennai

    ReplyDelete
  8. Excellent blog thanks for sharing Looking for the best place in Chennai to get your cosmetics at wholesale? The Pixies Beauty Shop is the premium wholesale cosmetics shop in Chennai that has all the international brands your salon deserves.
    Cosmetics Shop in Chennaia

    ReplyDelete
  9. Such a great information for blogger i am a professional blogger thanks…

    Start your journey with Best SAP Course and get hands-on Experience with 100% Placement assistance from experts Trainers @Softgen Infotech Located in BTM Layout Bangalore. Expert Trainers with 8+ Years of experience, Free Demo Classes Conducted.

    ReplyDelete
  10. Nice post. Thanks for sharing! I want humans to understand simply how excellent this facts is to your article.
    It’s thrilling content material and Great work.
    katmovies

    ReplyDelete
  11. Very useful blog thanks for sharing IndPac India the German technology Packaging and sealing machines in India is the leading manufacturer and exporter of Packing Machines in India.

    ReplyDelete