12. august 2008 - 11:10Der er
10 kommentarer og 1 løsning
Read file/folder names, problemer
Dav eksperter... sidder med et problem... er ny inden for c# programmering, og jeg skal have fundet en metode hvorpå jeg kan give en destination som fx. c:/film, og der skal den så tage alle fil navne / folder navne og smide ned i et txt dokument i alfabetisk orden...
1. jeg kan ikke finde koden for at læse fil navne, eller folder.
2. Kan ikke rigtigt finde ud af om jeg skal få den til at kører i en do while, mens den checker op på at når den finder en som den allerede har, skal den stoppe...
Men hvad skal jeg have i min tw.WriteLine(); ??...
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 Movie_Libary { public partial class Form1 : Form { String MovieFolderPath; String LibaryFilePath;
du kunne vel ikke hjælpe mig lidt mere ved at sætte det ind... For kender ikke halvdelen af de koder der er brugt og er meget i tvivl om hvordan det skal smækkes sammen
det ser sådan her ud nu... skal jeg så have hate button1 til at kalde den ?
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 Movie_Libary { public partial class Form1 : Form { String MovieFolderPath; String LibaryFilePath;
private void button1_Click(object sender, EventArgs e) { DirectoryInfo di = new DirectoryInfo(MovieFolderPath); }
public static void CopyAll(DirectoryInfo MovieFolderPath, DirectoryInfo LibaryFilePath) { // Check if the target directory exists, if not, create it. if (Directory.Exists(LibaryFilePath.FullName) == false) { Directory.CreateDirectory(LibaryFilePath.FullName); }
// Copy each file into it's new directory. foreach (FileInfo fi in MovieFolderPath.GetFiles()) { Console.WriteLine(@"Copying {0}\{1}", LibaryFilePath.FullName, fi.Name); fi.CopyTo(Path.Combine(LibaryFilePath.ToString(), fi.Name), true); }
// Copy each subdirectory using recursion. foreach (DirectoryInfo diSourceSubDir in MovieFolderPath.GetDirectories()) { DirectoryInfo nextTargetSubDir = LibaryFilePath.CreateSubdirectory(diSourceSubDir.Name); CopyAll(diSourceSubDir, nextTargetSubDir); } }
lige et sidste spørgsmål :)... hvad nu hvis jeg kun vil havde den til at tage hoved mapperne under windows.. eksempelvis... så den ikke tager alle mapper og filer under hver mappe... :)... og mange tak det andet virkede perfekt...
Du kan se i CopyAll funktionen at når den møder et DirectoryInfo object i source.GetDirectories(), så kører den samme funktionen igen. Det er netop her at undermapper kommer med.
Altså kan du bare udkommentere linien, eller lave en bool, der fortæller om undermapper skal med ala:
Psuedo (ikke teste)
public static void CopyAll(DirectoryInfo source, TextWriter tw, bool takeSubs) {
// Copy each file into it's new directory. foreach (FileInfo fi in source.GetFiles()) {
//fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true); tw.WriteLine(fi.FullName); } if(takeSubs) { // Copy each subdirectory using recursion. foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()){
CopyAll(diSourceSubDir, tw); } } }
Så kalder du den med
copyAll(new DirectoryInfo(@"c:\windows"), tw, false) // ingen undermapper copyAll(new DirectoryInfo(@"c:\windows"), tw, true) // med undermapper.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.