abonnement Unibet Coolblue Bitvavo
  zaterdag 20 november 2010 @ 16:40:32 #1
241851 Muchachooo
Kan ook gitaar spelen!
pi_88945962
Hoi allemaal!

Ik heb een klein probleem. Ik heb een klein programma geschreven dat mijn zusje loopt te naggen als ze haar downloads niet uit mijn documenten haalt. Dit doe ik door mijn documenten te vergelijken met een backup.
nu is mijn probleem dat dit programma ALTIJD aangeeft dat mijn backup verschilt van het origineel, zelfs als ik ze net gekopieerd heb.

weet iemand waar dit aan kan liggen of misschien een workaround in mijn code?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 btnOK_Click(object sender, EventArgs e)
        {
            
            string pathA = @"C:\Users\Sander\Videos\";
            string pathB = @"C:\Users\Sander\Vydeos\";

            System.IO.DirectoryInfo dir1 = new System.IO.DirectoryInfo(pathA);
            System.IO.DirectoryInfo dir2 = new System.IO.DirectoryInfo(pathB);

            
            IEnumerable<System.IO.FileInfo> list1 = dir1.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
            IEnumerable<System.IO.FileInfo> list2 = dir2.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

            bool areIdentical = list1.SequenceEqual(list2);

            while (areIdentical == false)
            {
                MessageBox.Show("Je hebt de downloads nog niet verplaatst!");
            }
            
            Application.Exit();
        }
    }
}
Maar doet dat eigenlijk nauwelijks nog.
pi_88946541
Waarom zo moeilijk doen? Je kan toch ook gewoon haar standaard download-dir anders instellen?
Of haar een eigen account geven, kan ze er gewoon een zooitje van maken zonder dat je er last van hebt.
Op donderdag 6 september 2012 @ 21:41 schreef Shakkara het volgende:
Uiteraard is het volgens Rutte en consorten de schuld van een imaginair links kabinet dat we ooit ergens in het verleden gehad schijnen te hebben.
  zaterdag 20 november 2010 @ 17:00:49 #3
241851 Muchachooo
Kan ook gitaar spelen!
pi_88946671
quote:
1s.gif Op zaterdag 20 november 2010 16:57 schreef Prutzenberg het volgende:
Waarom zo moeilijk doen? Je kan toch ook gewoon haar standaard download-dir anders instellen?
Of haar een eigen account geven, kan ze er gewoon een zooitje van maken zonder dat je er last van hebt.
probleem is, ze heeft een eigen account, en haar standaard directory staat ingesteld, alleen heeft mijn client daar schijt aan en gooit nog steeds alles in mijn docs. bovendien heeft het te maken met haar iets leren, aangezien ik haar bijna elke dag vraag of ze die zooi uit mijn documenten haalt en ze het nooit doet. principekwestie dus :P
Maar doet dat eigenlijk nauwelijks nog.
  zaterdag 20 november 2010 @ 17:01:22 #4
125855 xprotagonistx
FEED ME A STRAY CAT
pi_88946697
Ik ben geen c#, maar ik vermoed dit:

fout: Je kijkt nu of via SequenceEqual of alle FileInfos gelijk zijn. Een FileInfo bevalt de bestandsnaam, maar ook inclusief het pad (dat verschillend is). Verder staat er ook de tijd waarop het bestand gemaakt is, etc. Dat zijn eigenschappen die verschillen, ook al zijn de bestanden qua inhoud hetzelfde.

oplossing: op een andere manier bepalen of bestanden hetzelfde zijn. Je zou kunnen kijken of de namen (excl. pad) hetzelfde zijn en de groottes ook.
  zaterdag 20 november 2010 @ 17:03:54 #5
241851 Muchachooo
Kan ook gitaar spelen!
pi_88946786
quote:
1s.gif Op zaterdag 20 november 2010 17:01 schreef xprotagonistx het volgende:
Ik ben geen c#, maar ik vermoed dit:

fout: Je kijkt nu of via SequenceEqual of alle FileInfos gelijk zijn. Een FileInfo bevalt de bestandsnaam, maar ook inclusief het pad (dat verschillend is). Verder staat er ook de tijd waarop het bestand gemaakt is, etc. Dat zijn eigenschappen die verschillen, ook al zijn de bestanden qua inhoud hetzelfde.

oplossing: op een andere manier bepalen of bestanden hetzelfde zijn. Je zou kunnen kijken of de namen (excl. pad) hetzelfde zijn en de groottes ook.
zou je bepaalde parameters mee kunnen geven aan die SequenceEqual? want ik zou zo niet weten hoe ik zorg dat twee lists krijg met alleen de filenames.

EDIT zou het werken als ik system.io.fileinfo verander naar system.io.fileinfo.name?
Maar doet dat eigenlijk nauwelijks nog.
  zaterdag 20 november 2010 @ 17:07:35 #6
125855 xprotagonistx
FEED ME A STRAY CAT
pi_88946956
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool bestandInBeideLijsten(IEnumerable ene lijst, IEnumerable ander lijst)
{
    foreach(FileInfo ene in de ene lijst)
    {
        foreach(FileInfo andere in de andere lijst)
        {
            if (ene.naam.equals(andere.naam) && ene.grootte.equals(andere.grootte))
            {
                return true;
            }
        }
    }
    return false;
}
pi_88946976
Kan je niet gewoon naar de totale map grootte kijken?
  zaterdag 20 november 2010 @ 17:08:58 #8
241851 Muchachooo
Kan ook gitaar spelen!
pi_88947009
quote:
19s.gif Op zaterdag 20 november 2010 17:08 schreef TwenteFC het volgende:
Kan je niet gewoon naar de totale map grootte kijken?
hahah daar zeg je me wat.

EDIT nee, DirectoryInfo class heeft geen Length property helaas :'(
Maar doet dat eigenlijk nauwelijks nog.
  zaterdag 20 november 2010 @ 17:14:04 #9
125855 xprotagonistx
FEED ME A STRAY CAT
pi_88947234
Dude, niet alles wat je kan bedenken is door Bill voor jou gemaakt als kant en klaar blokje (`property') voor je probleem.

1
2
3
4
5
long totalegrootte=0;
foreach(bestandinfo bestand in directory)
{
   totalegrootte+=bestand.grootte;
}

Je zal ooit zelf wel een paar regels moeten typen.
pi_88947279
http://dotnetperls.com/directory-size

1e google result.

Zo dus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
using System
;
using System.IO;

public class 
ShowDirSize 
{
    public static 
long DirSize(DirectoryInfo d
    {    
        
long Size 0;    
        
// Add file sizes.
        
FileInfo[] fis d.GetFiles();
        foreach (
FileInfo fi in fis
        {      
            
Size += fi.Length;    
        }
        
// Add subdirectory sizes.
        
DirectoryInfo[] dis d.GetDirectories();
        foreach (
DirectoryInfo di in dis
        {
            
Size += DirSize(di);   
        }
        return(
Size);  
    }
    public static 
void Main(string[] args
    {
        if (
args.Length != 1
        {
            
Console.WriteLine("You must provide a directory argument at the command line.");    
        } 
        else 
        {  
            
DirectoryInfo d = new DirectoryInfo(args[0]);
            
long dsize DirSize(d);
            
Console.WriteLine("The size of {0} and its subdirectories is {1} bytes."ddsize);
        }
    }
}
?>

bron: http://msdn.microsoft.com/en-us/library/system.io.directory.aspx
  zondag 21 november 2010 @ 02:09:05 #11
241851 Muchachooo
Kan ook gitaar spelen!
pi_88964749
heb het werkend nu, dank jullie!
Maar doet dat eigenlijk nauwelijks nog.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')