Solved

c# copy file reorder

Posted on 2010-11-28
3
347 Views
Last Modified: 2012-05-10
the code below is work i use to copy mp3 file form sorce directory to destination directory ( some song is name in Thai language some mp3 player not accept so I change name of file to number)

how can I make a copy randomly copy every file from source but reorder

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 WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }



        private void button1_Click(object sender, EventArgs e)

        {

            FolderBrowserDialog dlg = new FolderBrowserDialog();

            if (dlg.ShowDialog() == DialogResult.OK)

            {

                sorrceTextbox.Text = dlg.SelectedPath;

            }





        }





        private void textBox1_TextChanged(object sender, EventArgs e)

        {



        }



        private void button2_Click(object sender, EventArgs e)

        {

            FolderBrowserDialog dlg2 = new FolderBrowserDialog();

            if (dlg2.ShowDialog() == DialogResult.OK)

            {

                destTextbox.Text = dlg2.SelectedPath;

            }



        }



        private void textBox2_TextChanged(object sender, EventArgs e)

        {



        }



        private void startcopy_Click(object sender, EventArgs e)

        {

            if (String.IsNullOrEmpty(sorrceTextbox.Text) || String.IsNullOrEmpty(destTextbox.Text))

            {

                this.labelStart.Text = "Hello World";

            }

            else

            {





                CopyFiles(sorrceTextbox.Text, destTextbox.Text);









            }







        }





        private void label1_Click(object sender, EventArgs e)

        {

            

        }



        private void Form1_Load(object sender, EventArgs e)

        {



        }

        

        public void CopyFiles(string sourceDir, string targetDir)

        {

            string[] sourceFiles = Directory.GetFiles(sourceDir);

            for (int i = 0; i < sourceFiles.Length; i++)

            {

                string sourceFile = sourceFiles[i];

                string targetFile = targetDir + "\\" + "1" + (i + 10).ToString().PadLeft(3, '0') + "1" + ".mp3";

                File.Copy(sourceFile, targetFile, true);

            }

        }





    }

}

Open in new window

0
Comment
Question by:teera
  • 2
3 Comments
 
LVL 13

Expert Comment

by:Pryrates
ID: 34225347
ordering as shown in the explorer is done by windows itself.
If you want to rename each file to archive a certain order this is another thing.

I think you need to be a little more specific about what you want to archive and how "ordering" is meant.
0
 

Author Comment

by:teera
ID: 34225358
Hi Pryrates
 
      i have radio station and I have limit song that i can open due to copyright  my program is open song so i want to  rename the song to number so I can open with mp3 machine without problem but if i open every day with out reorder song it will not good  
    if program can reorder song randomly I will very hapy
0
 
LVL 13

Accepted Solution

by:
Pryrates earned 500 total points
ID: 34226195
ah... now I get it.
Its is not about coping, its about renaming files to get a random order based on the std. sorting of your os.
If a simple prefix to the filenames would fit your needs maybe this might do
private void RandomizeFilesInDirectory(string src_directory)

        {

            string[] directoryFiles = Directory.GetFiles(src_directory);

            int fileCnt = directoryFiles.Length;

            string numberFormat = GetNumberFormatString(fileCnt);



            // first determine random prefix number 

            string[] randomNumbers = new string[fileCnt];

            Random random = new Random();

            for (int i = 0; i < fileCnt; i++)

            {

                bool next = false;

                while (!next)

                {

                    string prefix = random.Next(1, fileCnt + 1).ToString(numberFormat);

                    if (!randomNumbers.Contains(prefix))

                    {

                        randomNumbers[i] = prefix;

                        next = true;

                    }

                }

            }



            // now we rename the files

            for (int i = 0; i < fileCnt; i++)

            {

                FileInfo fi = new FileInfo(directoryFiles[i]);

                string newFileName = "";

                if (fi.Name.Contains("$"))

                {

                    newFileName = fi.Name.Substring(fi.Name.IndexOf("$") + 1);

                }

                else

                {

                    newFileName = fi.Name;

                }

                newFileName = string.Concat(randomNumbers[i], "$", newFileName);

                fi.MoveTo(Path.Combine(fi.Directory.FullName, newFileName));

            }

        }



//helper method

        private string GetNumberFormatString(int ref_number)

        {

            if (ref_number < 10)

                return "0";

            if (ref_number < 100)

                return "00";

            if (ref_number < 1000)

                return "000";

            if (ref_number < 10000)

                return "0000";

            if (ref_number < 100000)

                return "00000";



            return "000000";

        }

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…
Delivering innovative fully-managed cloud services for mission-critical applications requires expertise in multiple areas plus vision and commitment. Meet a few of the people behind the quality services of Concerto.

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now