Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

short directory files

Îåêßíçóå áðü ôï ìÝëïò yannis. Τελευταία δημοσίευση από το μέλος γιωργος μπακογιαννης στις 13-05-2008, 06:58. Υπάρχουν 13 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-05-2008, 20:13 41906

    short directory files

    Γειά σας παιδιά.

    Προσπαθώ να φτιάξω μία εφαρμογή όπου θα μου επιστρέφει τα χ πρώτα αρχεία ενός directory βάση του μεγέθους τους ή της παλαιότητάς τους

    χρησιμοποιώ την getfiles αλλα δεν ξερω πως μπορω να σορταρω το array των files .

    Εχετε καποια ιδεα ή που μπορω να το ψαξω?

    Ευχαριστω πολυ

     


    Yannis
  •  12-05-2008, 07:21 41910 σε απάντηση της 41906

    Απ: short directory files

    Έχουμε και λέμε

     

                var takeCount = 10;

                var files1 = from file in Directory.GetFiles(@"C:\", "*.*", SearchOption.AllDirectories)
                             orderby new FileInfo(file).Length descending
                             select new { name = file, length = new FileInfo(file).Length };

                foreach (var file in files1.Take(takeCount)) {
                    Console.WriteLine(file.length + " " + file.name);
                }

                Console.WriteLine();

                var files2 = from file in Directory.GetFiles(@"C:\", "*.*", SearchOption.AllDirectories)
                             orderby new FileInfo(file).LastWriteTime descending
                             select new { name = file, lastWriteTime = new FileInfo(file).LastWriteTime };

                foreach (var file in files2.Take(takeCount)) {
                    Console.WriteLine(file.lastWriteTime + " " + file.name);
                }

                Console.WriteLine();
     

     

    Αυτό που θέλω να ρωτήσω και εγώ με την σειρά μου είναι εάν υπάρχει τρόπος να μην κάνω δύο φορές μέσα στο query, new τη κλάση FileInfo.

    Αυτά.


    while (!dead) learn();
    Δημοσίευση στην κατηγορία:
  •  12-05-2008, 12:00 41912 σε απάντηση της 41910

    Απ: short directory files

    Καλησπέρα φιλε Γιώργο... LINQ is Magic

    var files1 = from file in Directory.GetFiles(@"C:\", "*.*", SearchOption.AllDirectories)
                   let fileInfo = new FileInfo(file)
                   orderby fileInfo.Length descending
                   select new { name = file, length = fileInfo.Length };


    Palladinos Nick
    Software Engineer
    -----------------------
    The limits of my language mean the limits of my world. (Ludwig Wittgenstein)
  •  12-05-2008, 12:07 41913 σε απάντηση της 41912

    Απ: short directory files

    ρε παιδια ωραια ολα αυτα αλλα με visual studio 2005 τι κανω?


    Yannis
  •  12-05-2008, 12:52 41915 σε απάντηση της 41913

    Απ: short directory files

    Ρε παιδιά, μήπως υπερβάλλετε λιγάκι? Πρώτον, το sorting μπορεί να γίνει με την Array.Sort και συγκεκριμένα την παραλλαγή που δέχεται delegate για το sorting. Σε αυτό το delegate μπορεί κανείς να συγκρίνει ημερομηνίες αντί για strings όπως θα έκανε η απλή sort. Δεύτερον, αν δεν θέλετε να φτιάχνετε FileInfo από τα strings, χρησιμοποιείστε την DirectoryInfo αντί για την Directory.

    Τρίτον, ξέρω αρκετές μύγες οι οποίες έχουν πολύ συγκεκριμένες και αποκρυσταλλωμένες απόψεις σχετικά με τις απόπειρες δολοφονίας τους με τη χρήση βαρέως πυροβολικού. Σε αντίθεση με τις συνήθεις κοινωνικές προκαταλήψεις, οι μύγες θεωρούν ότι είναι αρκετά εκλεπτυσμένα όντα ώστε να αξίζουν ένα είδος σεβασμού ο οποίος θα πρέπει να αντικατοπτρίζεται ακόμα και στον τρόπο εξόντωσης τους. Αν και γι αυτό το θέμα έχουν κάποιες απόψεις, οι οποίες δεν είναι του παρόντος.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-05-2008, 13:02 41916 σε απάντηση της 41913

    Απ: short directory files

    Μια πιθανή λύση για 2005

    int takeCount = 10;


    FileInfo[] files = new DirectoryInfo(path).GetFiles("*.*");
    Array.Sort(files, delegate(FileInfo firstFile, FileInfo secondFile)
                      {
                         return firstFile.Length.CompareTo(secondFile.Length);
                      });

    int counter = 0;
    foreach (FileInfo file in files)
    {
       if (counter++ != takeCount)
          Console.WriteLine(file);
       else
          break;
    }
       


    Palladinos Nick
    Software Engineer
    -----------------------
    The limits of my language mean the limits of my world. (Ludwig Wittgenstein)
  •  12-05-2008, 13:03 41917 σε απάντηση της 41915

    Απ: short directory files

    Παναγιώτη και εγώ με το short το ψάχνω αλλά σου είναι εύκολο να μου στείλεις 2 - 3 γραμμές κώδικα πως να το κάνω με τις ημερομηνίες?

     


    Yannis
  •  12-05-2008, 13:12 41918 σε απάντηση της 41915

    Απ: short directory files

    Παναγιώτης Καναβός:

    Τρίτον, ξέρω αρκετές μύγες οι οποίες έχουν πολύ συγκεκριμένες και αποκρυσταλλωμένες απόψεις σχετικά με τις απόπειρες δολοφονίας τους με τη χρήση βαρέως πυροβολικού. Σε αντίθεση με τις συνήθεις κοινωνικές προκαταλήψεις, οι μύγες θεωρούν ότι είναι αρκετά εκλεπτυσμένα όντα ώστε να αξίζουν ένα είδος σεβασμού ο οποίος θα πρέπει να αντικατοπτρίζεται ακόμα και στον τρόπο εξόντωσης τους. Αν και γι αυτό το θέμα έχουν κάποιες απόψεις, οι οποίες δεν είναι του παρόντος.

    Θα ήταν πολύ ενδιαφέρον να συζητήσουμε σε κάποιο Architecture meeting τις "κοινωνικό-πολιτικές" αλλαγές που φέρνει το LINQ στην mainstream καθημερινότητα...


    Palladinos Nick
    Software Engineer
    -----------------------
    The limits of my language mean the limits of my world. (Ludwig Wittgenstein)
  •  12-05-2008, 13:18 41919 σε απάντηση της 41917

    Απ: short directory files

    DirectoryInfo dir = new DirectoryInfo(@"d:\");
    FileInfo[] files=dir.GetFiles("*.*",SearchOption.AllDirectories);
    Array.Sort(files, (Comparison<FileInfo>)delegate(FileInfo left, FileInfo right)
                      {return left.CreationTime.CompareTo(right.CreationTime);});

     Επίσης, μήν γράφεις short γιατί μπλέκεις όποιον προσπαθεί να απαντήσει. Η μέθοδος λέγεται Sort.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-05-2008, 13:27 41920 σε απάντηση της 41918

    Απ: short directory files

    Αλλαγές προκαλεί, αλλά να μην ξεχνάμε τα απλά πράγματα! Προς τί αυτή η εμμονή στην Directory, όταν προκαλεί τη δημιουργία παραπανίσιων αντικειμένων?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-05-2008, 13:31 41921 σε απάντηση της 41920

    Απ: short directory files

    Παναγιώτης Καναβός:

    Αλλαγές προκαλεί, αλλά να μην ξεχνάμε τα απλά πράγματα! Προς τί αυτή η εμμονή στην Directory, όταν προκαλεί τη δημιουργία παραπανίσιων αντικειμένων?

    Σε αυτό θα συμφωνήσω απόλυτα


    Palladinos Nick
    Software Engineer
    -----------------------
    The limits of my language mean the limits of my world. (Ludwig Wittgenstein)
  •  12-05-2008, 14:18 41924 σε απάντηση της 41919

    Απ: short directory files

    εχεις δικιο Παναγιωτη , λόγω ταχύτητας !

    Νομίζω ότι έχω αυτό που θέλω , εαυχαριστώ πολύ


    Yannis
  •  12-05-2008, 23:29 41942 σε απάντηση της 41912

    Απ: short directory files

    Να και οι δικές μου απόψεις για το LINQ:

    var items = from file in new DirectoryInfo(@"c:\").GetFiles()
                orderby file.LastWriteTime
                select file;
    foreach (var file in items.Take(10))
    {
       Console.WriteLine(file.Name);
    }

    για να έρθουν τα αρχεία ταξινομημένα ανά ημερομηνία και

    var groups= from file in new DirectoryInfo(@"c:\").GetFiles()
                orderby file.Length
                group file by file.LastWriteTime.Date;
    foreach (var group in groups)
    {
       Console.WriteLine("=== {0:d} with {1} Items ===", group.Key, group.Count());
       foreach (var file in group)
       {
          Console.WriteLine(file.Name); 
       }
    }

    για να έρθουν τα αρχεία γκρουπαρισμένα ανά ημερομηνία και ταξινομημένα ανα μέγεθος. Περισσότερο κώδικα γράφω για να τυπώσω τα αποτελέσματα παρά για να τα πάρω! Και στις δύο περιπτώσεις η δουλειά έχει γίνει σε ... 3 γραμμές!


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-05-2008, 06:58 41944 σε απάντηση της 41912

    Απ: short directory files

    PALLADIN:

    Καλησπέρα φιλε Γιώργο... LINQ is Magic

    var files1 = from file in Directory.GetFiles(@"C:\", "*.*", SearchOption.AllDirectories)
                   let fileInfo = new FileInfo(file)
                   orderby fileInfo.Length descending
                   select new { name = file, length = fileInfo.Length };

    Καλημέρα φίλε Νίκο...

    Σε ευχαριστώ για την "let" Smile

    ...LINQ is Magic



    while (!dead) learn();
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems