Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Räkna filer

Postades av 2004-05-10 11:09:40 - Benni Svensson, i forum c# (c-sharp), Tråden har 8 Kommentarer och lästs av 904 personer

Jag försöker att räkna filerna (även i undermappar). Det verkar som om jag är fel ute igen.
<code>
folderName = folderBrowserDialog1.SelectedPath;
DirectoryInfo nyInf = new DirectoryInfo(folderName);
countMappar(nyInf);

private void countMappar(DirectoryInfo dir)
{//räknar mapparna på webbplatsen
string mapp = dir.ToString();
string[] dirs = Directory.GetDirectories(mapp);
int count = dirs.Length;
for (int i=0; i<count; i++)
{
DirectoryInfo nyMapp = new DirectoryInfo(dirs[i]);
countfiler(nyMapp);
}
smoothProgressBar1.Maximum = totaltAntal;
this.Text = this.Text + " Antal filer: " + totaltAntal.ToString();
}
private void countfiler(DirectoryInfo dir)
{ //räknar filerna på webbplatsen
string[] files = Directory.GetFiles(dir.ToString());
foreach(string file in files)
{
MessageBox.Show(file.ToString());
return;
}
}
</code>
Jag la in en MessageBox för att kolla filerna, men det är tomt.
Vad gör jag för fel (nu igen)?

[REDIGERAT]

Jag fick det att fungera, men är det ett bra sätt??

<code>
private void countMappar(DirectoryInfo dir)
{//räknar mapparna på webbplatsen
string mapp = dir.ToString();
string[] dirs = Directory.GetDirectories(mapp);
int count = dirs.Length;
int i;
for (i=0; i<count; i++)
{
DirectoryInfo nyMapp = new DirectoryInfo(dirs[i]);
countfiler(nyMapp);
}
smoothProgressBar1.Maximum = totaltAntal;
this.Text = this.Text + " Antal kataloger: " + i +" Antal filer: " + totaltAntal.ToString();
}
private void countfiler(DirectoryInfo dir)
{ //räknar filerna på webbplatsen
string[] files = Directory.GetFiles(dir.ToString());
foreach(string file in files)
{
totaltAntal++;
}
return;
}
</code>
Jag är ändå misstänksam mot den här koden, gämfört med utforskaren, så får jag inte rätt antal kataloger eller filer.


Svara

Sv: Räkna filer

Postades av 2004-05-10 11:33:30 - Johan Bovin

jag är inte helt säker men jag tror att det tyvärr är det enda sättet...
Du skulle kunna skippa att skapa din Directoryinfo eftersom du ändå bara använder namnet. du borde kunna använda strängen direkt. Sen är ju frågan om du inte vill gå rekursivt neråt till alla undermappar...:

private void countMappar(string dir)
{//räknar mapparna på webbplatsen             
    string[] dirs = Directory.GetDirectories(dir);
    int count = dirs.Length;
     int i;
    for (i=0; i<count; i++)
    {
	totaltAntal+=countfiler(dirs[i]);
	countMappar(dirs[i]);//rekursivt neråt?
    }             
     smoothProgressBar1.Maximum = totaltAntal;
    this.Text  =String.Format("{0} Antal kataloger: {1} Antal filer: {2}",this.Text,i,totaltAntal);
}
private int countfiler(string dir)
{  //räknar filerna på webbplatsen 
    return Directory.GetFiles(dir).Length;           
}


obs koden är ej testad så det kan vara nåt fel...
Orsaken till att du inte får rätt count är att du inte går rekursivt neråt till alla undermappar...


Svara

Sv: Räkna filer

Postades av 2004-05-10 11:49:35 - Raderat konto

Detta kan kanske ge några tankar:

      private void countMappar(DirectoryInfo dir)
      {          
         string dirs = "";

         foreach(DirectoryInfo di in dir.GetDirectories())
         {
            dirs += @"Directory: " + di.ToString() + "<br>";

            foreach(FileInfo fi in di.GetFiles())
            {
               dirs += "&nbsp;&nbsp;&nbsp;&nbsp;" + fi.ToString() + "<br>";
            }
         }

         this.Label1.Text = dirs;

      }


Svara

Sv: Räkna filer

Postades av 2004-05-10 12:00:35 - Raderat konto

Eller så här (om du bara skall räkna filer och foldrar):

      private void countMappar(DirectoryInfo dir)
      {  //räknar mapparna på webbplatsen 
         
         int dircnt = 0;
         int filecnt = 0;

         foreach(DirectoryInfo di in dir.GetDirectories())
         {
            dircnt++;

            foreach(FileInfo fi in di.GetFiles())
            {
               filecnt++;
            }
         }

         this.Label1.Text = string.Format("Det finns totalt: {0} filer i {1} mappar på webbplatsen", filecnt, dircnt);

      }


Svara

Sv: Räkna filer

Postades av 2004-05-10 12:34:48 - Benni Svensson

Tack för förslag, men inte något av förslagen stämmer enl utforskaren.
Det är fel på både antal kataloger och antal filer.

När det gäller min kod, så stämmer antal filer, men inte antal kataloger.

Jo vissst rekusivt gäller...


Svara

Sv: Räkna filer

Postades av 2004-05-10 12:36:25 - Johan Bovin

Detta bör fungera..

int folders=0;
int files=0;
countMappar("C:\\test",ref folders,ref files);
MessageBox.Show(String.Format("Folders: {0} files: {1}",folders,files));

private void countMappar(string dir, ref int foldercounter, ref int filecounter)
{            
	string[] dirs = Directory.GetDirectories(dir);
	int count = dirs.Length;
	int i;
	filecounter+=Directory.GetFiles(dir).Length;
	for (i=0; i<count; i++)
	{
		countMappar(dirs[i],ref foldercounter,ref filecounter);
	}             
	foldercounter+=count;
}


Svara

Sv: Räkna filer

Postades av 2004-05-10 14:18:06 - Benni Svensson

Hej och tack Arathon, nu blev den biten kanonbra.
Den stämmer exackt med utforskaren.

Jag har dock ett problem till, jag använder ju föregående class för att sätta min progressbars maxtal. Därefter så skall jag kopiera filer (det är egenteligen en backup på webbplatsen). Problemet är att jag inte kan få till det med progressbarens value, den visar för lite.


<code>
private void FileCopy(string srcdir, string destdir, bool recursive)
{
try
{
DirectoryInfo dir;
FileInfo[] files;
DirectoryInfo[] dirs;
string tmppath;
smoothProgressBar1.Refresh();
if (! Directory.Exists(destdir))
{
Directory.CreateDirectory(destdir);
}
dir = new DirectoryInfo(srcdir);
if (! dir.Exists)
{
throw new ArgumentException("source dir doesn't exist -> " + srcdir);
}
files = dir.GetFiles();
foreach(FileInfo file in files)
{//
tmppath=Path.Combine(destdir, file.Name);
info.Text = "Kopiera fil: " + tmppath.ToString();
info.Refresh();
file.CopyTo(tmppath, false);
}//cleanup
files = null;
if (! recursive)
{
return;
}//otherwise, get dirs
dirs = dir.GetDirectories();
foreach(DirectoryInfo subdir in dirs)
{
tmppath = Path.Combine(destdir, subdir.Name);
FileCopy(subdir.FullName, tmppath, recursive);
this.smoothProgressBar1.Value++;
smoothProgressBar1.Refresh();
} //cleanup
dirs = null;
dir = null;
}
catch
{
return;
}
Form1.ActiveForm.Refresh();
}
</code>

Gör jag fel här med eller?


Svara

Sv: Räkna filer

Postades av 2004-05-10 14:28:24 - Johan Bovin

Vad sätter du progressbarens maxvärde till då? antalet filer eller antalet directories? Så som det är nu så räknar du ju bara upp ett för varje directory...
Är det inte PerformStep man skall använda istället för att själv räkna upp Value alltså:
this.smoothProgressBar1.Value++; ersätts med this.smoothProgressBar1.PerformStep();


Svara

Sv: Räkna filer

Postades av 2004-05-10 14:58:09 - Benni Svensson

Naturligtvis var det så, tack för din hjälp


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 156
27 952
271 704
15 910
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies