•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the C# section within the Software Development category of DaniWeb, a massive community of 392,061 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 4,269 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C# advertiser:
Views: 4645 | Replies: 20
![]() |
how would i coppy only specific things out of a directory. say *.mp3. I am able to copy the whold directory but i only want specific endings.
this is part of the copy code
if you no how i can specify wha i want to copy that be great.
this is part of the copy code
try
{
Directory.CreateDirectory(targerDirectoryName);
string[] files = Directory.GetFiles(sourceDirectoryName);
foreach (string fileName in files)
File.Copy(fileName, targerDirectoryName + Path.DirectorySeparatorChar + Path.GetFileName(fileName));
string[] directories = Directory.GetDirectories(sourceDirectoryName);
foreach (string directory in directories)
CopyDirectory(directory, targerDirectoryName + Path.DirectorySeparatorChar + Path.GetFileName(directory));
}
catch
{
//
}if you no how i can specify wha i want to copy that be great.
Firefox
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
•
•
Join Date: Dec 2003
Posts: 55
Reputation:
Rep Power: 5
Solved Threads: 6
string[] files = Directory.GetFiles(sourceDirectoryName, "*.mp3");
not eacxtly what i want it to do. You see i am attempting to make a program that rips the songs off the ipod. In case you didnt know they are stores in a hidden folder on the ipod called Ipod_control. In that there is a folder called music.. In music there are alot of individual forders called f01 f02 ect. when i tell the program to copy all mp3 from music it copies the f01 ect. folders to. i just want the mp3's. is thre a way i can do this?
Firefox
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
•
•
Join Date: Dec 2003
Posts: 55
Reputation:
Rep Power: 5
Solved Threads: 6
ok, this is a function which scans a sourcedir recursively and copies the found files to the target dir:
you call it like this:
make sure you created the target dir before attempting to use that function! (replace the source and target dir to your needs!)
/// <summary>
///
///
/// </summary>
/// <param name="sourceDir">source directory</param>
/// <param name="targetDir">target directory</param>
/// <param name="targetDir">file type (mp3)</param>
static void Mp3FileCopy(string sourceDir, string targetDir, string fileType)
{
try
{
foreach (string d in Directory.GetDirectories(sourceDir))
{
foreach (string f in Directory.GetFiles(d, fileType))
{
File.Copy(f,
targetDir + "\\" + new FileInfo(f).Name,
false);
}
Mp3FileCopy(d, targetDir, fileType);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}you call it like this:
Mp3FileCopy("d:\\download", "d:\\mp3test", "*.mp3");make sure you created the target dir before attempting to use that function! (replace the source and target dir to your needs!)
thank you, that is exactly what i wanted. thanks again.
Firefox
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
Ok all is fine cept when i copies the mp3's scince some of them are called wierd names in the ipod control folder. like qwxs thats what it copies them as. is there a way i can tell it to copy but like also copy its id3 tags so the names are correct.
Note: only some songs have weird names in the folder so only so some come out weiird.
Note: only some songs have weird names in the folder so only so some come out weiird.
Firefox
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
•
•
Join Date: Dec 2003
Posts: 55
Reputation:
Rep Power: 5
Solved Threads: 6
You should remove the sentence "google is there for you" in your sig, because you do anything but googlin' :rolleyes:
http://csharp-home.com/index/tiki-re...?articleId=149
http://csharp-home.com/index/tiki-re...?articleId=149
•
•
•
•
Originally Posted by r0ckbaer
You should remove the sentence "google is there for you" in your sig, because you do anything but googlin' :rolleyes:
http://csharp-home.com/index/tiki-re...?articleId=149
Heh, welll lemme try that.
Firefox
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
oks o i set this
Now when i presss the show mp3 buttons(this populates the list box with the mp3's in the directory) it gives me an error saying the folded acsess is denied. Am i seeting it up wrong. i want the program to reaad the mp3 tags as it populates the listbox
here is the code that populates the list box. this is where i gert the error
Any Ideas
public void Read()
{
File.SetAttributes(textBox1.Text + "\\iPod_Control\\Music", FileAttributes.Normal);
// Read the 128 byte ID3 tag into a byte array
FileStream oFileStream;
oFileStream = new FileStream(this.filename, FileMode.Open);
byte[] bBuffer = new byte[128];
oFileStream.Seek(-128, SeekOrigin.End);
oFileStream.Read(bBuffer, 0, 128);
oFileStream.Close();
// Convert the Byte Array to a String
Encoding instEncoding = new ASCIIEncoding(); // NB: Encoding is an Abstract class
string id3Tag = instEncoding.GetString(bBuffer);
// If there is an attched ID3 v1.x TAG then read it
if (id3Tag.Substring(0, 3) == "TAG")
{
this.Title = id3Tag.Substring(3, 30).Trim();
this.Artist = id3Tag.Substring(33, 30).Trim();
this.Album = id3Tag.Substring(63, 30).Trim();
this.Year = id3Tag.Substring(93, 4).Trim();
this.Comment = id3Tag.Substring(97, 28).Trim();
// Get the track number if TAG conforms to ID3 v1.1
if (id3Tag[125] == 0)
this.Track = bBuffer[126];
else
this.Track = 0;
this.GenreID = bBuffer[127];
this.hasTag = true;
// ********* IF USED IN ANGER: ENSURE to test for non-numeric year
}
else
{
this.hasTag = false;
}
}
public void updateMP3Tag()
{
// Trim any whitespace
this.Title = this.Title.Trim();
this.Artist = this.Artist.Trim();
this.Album = this.Album.Trim();
this.Year = this.Year.Trim();
this.Comment = this.Comment.Trim();
// Ensure all properties are correct size
if (this.Title.Length > 30) this.Title = this.Title.Substring(0, 30);
if (this.Artist.Length > 30) this.Artist = this.Artist.Substring(0, 30);
if (this.Album.Length > 30) this.Album = this.Album.Substring(0, 30);
if (this.Year.Length > 4) this.Year = this.Year.Substring(0, 4);
if (this.Comment.Length > 28) this.Comment = this.Comment.Substring(0, 28);
// Build a new ID3 Tag (128 Bytes)
byte[] tagByteArray = new byte[128];
for (int i = 0; i < tagByteArray.Length; i++) tagByteArray[i] = 0; // Initialise array to nulls
// Convert the Byte Array to a String
Encoding instEncoding = new ASCIIEncoding(); // NB: Encoding is an Abstract class // ************ To DO: Make a shared instance of ASCIIEncoding so we don't keep creating/destroying it
// Copy "TAG" to Array
byte[] workingByteArray = instEncoding.GetBytes("TAG");
Array.Copy(workingByteArray, 0, tagByteArray, 0, workingByteArray.Length);
// Copy Title to Array
workingByteArray = instEncoding.GetBytes(this.Title);
Array.Copy(workingByteArray, 0, tagByteArray, 3, workingByteArray.Length);
// Copy Artist to Array
workingByteArray = instEncoding.GetBytes(this.Artist);
Array.Copy(workingByteArray, 0, tagByteArray, 33, workingByteArray.Length);
// Copy Album to Array
workingByteArray = instEncoding.GetBytes(this.Album);
Array.Copy(workingByteArray, 0, tagByteArray, 63, workingByteArray.Length);
// Copy Year to Array
workingByteArray = instEncoding.GetBytes(this.Year);
Array.Copy(workingByteArray, 0, tagByteArray, 93, workingByteArray.Length);
// Copy Comment to Array
workingByteArray = instEncoding.GetBytes(this.Comment);
Array.Copy(workingByteArray, 0, tagByteArray, 97, workingByteArray.Length);
// Copy Track and Genre to Array
tagByteArray[126] = System.Convert.ToByte(this.Track);
tagByteArray[127] = System.Convert.ToByte(this.GenreID);
// SAVE TO DISK: Replace the final 128 Bytes with our new ID3 tag
FileStream oFileStream = new FileStream(this.filename, FileMode.Open);
if (this.hasTag)
oFileStream.Seek(-128, SeekOrigin.End);
else
oFileStream.Seek(0, SeekOrigin.End);
oFileStream.Write(tagByteArray, 0, 128);
oFileStream.Close();
this.hasTag = true;
}
Now when i presss the show mp3 buttons(this populates the list box with the mp3's in the directory) it gives me an error saying the folded acsess is denied. Am i seeting it up wrong. i want the program to reaad the mp3 tags as it populates the listbox
here is the code that populates the list box. this is where i gert the error
private void button2_Click(object sender, EventArgs e)
{
label2.Visible = true;
string sourceDir = textBox1.Text + "\\iPod_Control\\Music"; \\This is whhere they would type the drive
string targetDir = folderBrowserDialog1.SelectedPath;
foreach (string d in Directory.GetDirectories(sourceDir))
{
foreach (string f in Directory.GetFiles(d, fileType))
{
listBox1.Items.Add(Convert.ToString(f));//show whats going to be copied in the listbox before they rip it
}
}
Any Ideas
Firefox
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
Ewido
Tune up windows
Get detailed system information
My Fixes
Member - Alliance of Security Analysis Professionals - Since 2006
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
•
•
•
•
•
•
•
•
DaniWeb C# Marketplace
Other Threads in the C# Forum
- Previous Thread: Get data from Access instead of Notepad (URGENT)
- Next Thread: Differences between Delegates and Events



Linear Mode