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

 

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

Εύρεση αρχειου

Îåêßíçóå áðü ôï ìÝëïò dimcal. Τελευταία δημοσίευση από το μέλος cap στις 19-06-2009, 17:16. Υπάρχουν 27 απαντήσεις.
Σελίδα 1 από 2 (28 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-06-2009, 11:50 51750

    Εύρεση αρχειου

    Χρειαζομαι να φτιαξω ενα προγραμμα το οποιο θα αναζητα ενα αρχειο σε ενα φακελο που μπορει να περιεχει αγνωστο αριθμο φακελων μεσα του οπου καθε υποφακελος μπορει να εχει η να μην εχει αρχεια ... Ξεκινησα να φτιαχνω το κωδικα αλλα ειναι πολυ αργος αφου εχω πολλα αρχεια να ψαξω . Σκεφτομουνα μηπως υπαρχει καποιος τροπος να χρησιμοποιω το search των windows και να μου επιστρεφει  μια τιμη αν υπαρχει η οχι το αρχειο και βεβαια το path...

  •  17-06-2009, 12:00 51752 σε απάντηση της 51750

    Απ: Εύρεση αρχειου

    Καλημέρα. Για ρίξε ένα βλέφαρο εδώ http://support.microsoft.com/kb/303974 . Εάν θεωρείς πως αυτό το παράδειγμα δεν κάνει τη δουλειά σου, γράψε στο google "search file,c#", και θα βρεις πολλά παραδείγματα. Χωρίς τα αυτάκια εννοείται. Αν δουλεύεις με VB ε κάνε τις απαραίτητες αντικαταστάσεις.
  •  17-06-2009, 12:25 51756 σε απάντηση της 51750

    Απ: Εύρεση αρχειου

    To Windows Search έχει API. Δες εδώ http://msdn.microsoft.com/en-us/library/aa965362.aspx έχει και samle code.
    Vir prudens non contra ventum mingit
  •  17-06-2009, 13:16 51770 σε απάντηση της 51752

    Απ: Εύρεση αρχειου

    epp1123:
    Καλημέρα. Για ρίξε ένα βλέφαρο εδώ http://support.microsoft.com/kb/303974 . Εάν θεωρείς πως αυτό το παράδειγμα δεν κάνει τη δουλειά σου, γράψε στο google "search file,c#", και θα βρεις πολλά παραδείγματα. Χωρίς τα αυτάκια εννοείται. Αν δουλεύεις με VB ε κάνε τις απαραίτητες αντικαταστάσεις.

    Με vb δουλευω ... Εχω γνωσεις c++ αλλα δεν ειμαι εξοικιωμενος με c# . To πρωτο url δεν ειναι αυτο που ζηταω ... αυτος βρισκει μονο τα dll αρχεια . Εγω θελω να ψαχνει ολους τους φακελους χωρις να τους βαζει σε λιστα . Αυτό το έκανα και παει πολύ αργα...

  •  17-06-2009, 13:19 51771 σε απάντηση της 51756

    Απ: Εύρεση αρχειου

    KelMan:
    To Windows Search έχει API. Δες εδώ http://msdn.microsoft.com/en-us/library/aa965362.aspx έχει και samle code.

     

    Επειδη δεν εχω δουλεψει με API  μπορεις να μπου πεις πως θα το χρησιμοποιησω? δεν βρηκα sample code στην σελιδα ...  υπαρχει καπου αλλου?

  •  17-06-2009, 13:46 51779 σε απάντηση της 51771

    Απ: Εύρεση αρχειου

    Έχεις δουλέψει αλλά δεν το ξέρεις Big Smile To ADO.NET για παράδειγμα είναι ένα API. Μην σε τρομάζει ο όρος, βασικά ένα API είναι ένα set από βιβλιοθήκες, έτοιμος κώδικας που σου παρέρέχει κάποιο functioanlity. Από εκεί και πέρα, χρειάζεται διάβασμα για να μάθεις το πως χρησιμοποιείται.

    Τα samples βρίσκονται στο Windows Search SDK το οποίο μπορείς να κατεβάσεις από εδώ: http://www.microsoft.com/downloads/details.aspx?FamilyID=645300AE-5E7A-4CE7-95F0-49793F8F76E8&displaylang=en Επειδή ο κώδικας είναι σε C#, θα πρέπει να χρησιμοποιήσεις κάποιον από τους πολλούς on-line converters που υπάρχουν για να τα γυρίσεις σε VB.


    Vir prudens non contra ventum mingit
  •  17-06-2009, 14:28 51782 σε απάντηση της 51771

    Απ: Εύρεση αρχειου

    Ένα απλό παράδειγμα σε vb.net που έφτιαξα μόλις τώρα

            Using conn As New OleDbConnection("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';")
                Dim dr As OleDbDataReader = Nothing
                conn.Open()
                Dim sqlString As String
                sqlString = "SELECT System.ItemUrl " + _
                            "FROM SystemIndex WHERE System.ItemUrl like '%Temp'"
                Using cmd As New OleDbCommand(sqlString, conn)

                    dr = cmd.ExecuteReader()
                    While dr.Read()
                        MessageBox.Show(dr(0).ToString)
                    End While

                End Using
                dr.Close()
                conn.Close()
            End Using

    Όλα τα λεφτά είναι να μάθεις να συντάσεις σωστά το query. 
    Από απόδοση θα πάθεις πλάκα. Είνια ταχύτατο


    Manos
  •  17-06-2009, 14:42 51783 σε απάντηση της 51750

    Απ: Εύρεση αρχειου

    Την Directory.GetFiles την κοίταξες? Μία από τις παραλλαγές τις σου επιτρέπει να ψάξεις σε όλα τα subdirectories ενός path για όσα αρχεία ταιριάζουν σε ένα pattern. Π.χ. για να βρεις όλα τα txt αρχεία σε ένα φάκελο γράφεις:

    string[] files=Directory.GetFiles("e:\\downloads","*.txt",SearchOption.AllDirectories);

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  17-06-2009, 18:52 51789 σε απάντηση της 51783

    Απ: Εύρεση αρχειου

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

    Την Directory.GetFiles την κοίταξες? Μία από τις παραλλαγές τις σου επιτρέπει να ψάξεις σε όλα τα subdirectories ενός path για όσα αρχεία ταιριάζουν σε ένα pattern. Π.χ. για να βρεις όλα τα txt αρχεία σε ένα φάκελο γράφεις:

    string[] files=Directory.GetFiles("e:\\downloads","*.txt",SearchOption.AllDirectories);

     

    Mετεφερα αυτο σε vb και το προσαρμοσα ως εξης....

    Dim files As String() = Directory.GetFiles("C:/files/certain files", textbox1.text+".*", SearchOption.AllDirectories)

    αλλα παρ' ολα αυτα δεν παιζει ... η αργει τοσο πολυ που δεν ειδα αποτελεσματα

  •  17-06-2009, 18:55 51790 σε απάντηση της 51782

    Απ: Εύρεση αρχειου

    manosB:
    Ένα απλό παράδειγμα σε vb.net που έφτιαξα μόλις τώρα

            Using conn As New OleDbConnection("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';")
                Dim dr As OleDbDataReader = Nothing
                conn.Open()
                Dim sqlString As String
                sqlString = "SELECT System.ItemUrl " + _
                            "FROM SystemIndex WHERE System.ItemUrl like '%Temp'"
                Using cmd As New OleDbCommand(sqlString, conn)

                    dr = cmd.ExecuteReader()
                    While dr.Read()
                        MessageBox.Show(dr(0).ToString)
                    End While

                End Using
                dr.Close()
                conn.Close()
            End Using

    Όλα τα λεφτά είναι να μάθεις να συντάσεις σωστά το query. 
    Από απόδοση θα πάθεις πλάκα. Είνια ταχύτατο

     

    Προτιμω να μη το κανω με sql   γιατι αν τα βαλω σε βαση δεδομενων θα πρεπει να ξοδεψω πολυ χρονο για να περασω ολα τα αρχεια... ειμαι σιγουρος οτι η αναζητηση στην sql θα ειναι ταχυτατη...

  •  17-06-2009, 22:13 51795 σε απάντηση της 51790

    Απ: Εύρεση αρχειου

    Μάλλον δεν κατάλαβες τον κώδικα που παρέθεσε ο manosB. Πρόκειται για τον τρόπο που χρησιμοποιείς το Windows Search API μέσω ενός OLE DB provider. Για να το πω πιο απλά, ο OLE DB provider κάνει το file system να μοιάζει με μια βάση την οποία ψάχνεις με SQL-like SELECT εντολές, ωστόσο τα αρχεία βρίσκονται στο file system.

     


    Vir prudens non contra ventum mingit
  •  17-06-2009, 23:01 51796 σε απάντηση της 51795

    Απ: Εύρεση αρχειου

    Μπορει καποιος να μου εξηγησει τι ακριβως γινεται σε αυτον τον κωδικα? δηλαδη εγω αναζητω ενα αρχειο ... σε ενα φακελο που εχει ενα συγκεκριμενο path ... θα πρεπει εισαγωντας τις 2 αυτες πληροφοριες (ονομα αρχειου και path) να μου επιστεφει μια τιμη για το αν υπαρχει το αρχειο η οχι .Δεν εχω ξαναδει αυτη τη λογικη να αναζητω αρχεια στο filesystem οπως σε μια βαση δεδομενων...

  •  18-06-2009, 10:28 51799 σε απάντηση της 51796

    Απ: Εύρεση αρχειου

    dimcal:

    Μπορει καποιος να μου εξηγησει τι ακριβως γινεται σε αυτον τον κωδικα? δηλαδη εγω αναζητω ενα αρχειο ... σε ενα φακελο που εχει ενα συγκεκριμενο path ... θα πρεπει εισαγωντας τις 2 αυτες πληροφοριες (ονομα αρχειου και path) να μου επιστεφει μια τιμη για το αν υπαρχει το αρχειο η οχι .Δεν εχω ξαναδει αυτη τη λογικη να αναζητω αρχεια στο filesystem οπως σε μια βαση δεδομενων...


    Όταν εσύ μέσα από τα Windows κάνεις search τότε τα Vista χρησιμοποιούν το indexing που έχουν κάνει για να βρίσκουν πολύ γρήγορα και άμεσα αποτελέσματα.

    Το ίδιο κάνει και ο κώδικας μου. Δηλαδή η βάση είναι το index (εξού και το περίεργο connection String που υπάρχει) και εσύ απλά κάνεις ερωτήματα σε αυτό. Σε παρακαλώ διάβασε προσωπικά το λινκ από το msdn που σου έδωσε ο Kelman για να καταλάβεις λίγο τι γίνεται. 
    Το δύσκολο κομμάτι του παραπάνω κώδικα είναι η σύνταξη του SQL like ερωτήματος που έχει κάποιες ιδιομορφίες. Δες εδώ πως συντάσεται.

     Τον δοκίμασες και δεν παίζει. Σε εμένα παίζει μια χαρά και πολύ γρήγορα. 

    Αν έχεις XP δεν έχουν από default το Windows Search αλλά σαν add in. Στα Vista υπάρχει από Default. Δες αυτό το άρθρο για λεπτομέρειες. 

    Τώρα αν δεν έχεις δουλέψει ξανά με ADO.NET πες το να σου στείλουμε 2-3 LINK για να δεις τι γίνεται.

    Manos
  •  18-06-2009, 11:32 51804 σε απάντηση της 51799

    Απ: Εύρεση αρχειου

    Πόσα αρχεία περιέχει ο φάκελος που ψάχνεις και πόσο συχνά κάνεις την αναζήτηση? Πόσο γρήγορα θέλεις να πάρεις τα αποτελέσματα?

    Μου φαίνεται λιγάκι περίεργο να χρειάζεσαι Windows Search απλά για να βρεις ένα αρχείο. Όταν λές ότι δεν σου δούλεψε η GetFiles, σε πόσα αρχεία έψαχνες και πόσο περίμενες να πάρεις αποτέλεσμα? Μήπως τελικά η λύση ήταν μπροστά σου από την αρχή αλλά βιάστηκες να την απορρίψεις?

    Στο δικό μου μηχάνημα η πρώτη αναζήτηση άργησε 8" αλλά η δεύτερη πήρε μόλις 0.28, ασχέτως του τί έψαχνα. Κάτι τέτοιο είναι λογικό καθώς την πρώτη φορά το λειτουργικό διαβάζει τις εγγραφές του directory από το σκληρό ενώ την δεύτερη είναι στην cache. Και το Download folder μου έχει 12000 αρχεία σε 1500 folders απροσδιόριστου βάθους.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-06-2009, 11:43 51806 σε απάντηση της 51804

    Απ: Εύρεση αρχειου

    Δεν απεριψα καμια λυση ! thanks για τα λινκ θα τα κοιταξω σημερα  και θα σας πω . Οσο για την getfiles δοκιμασα να ψαξω το αρχειο μετατρεποντας το κωδικα που μου εγραψες σε vb αλλα δεν βρηκε τιποτα ... Απλα το εγραψα αυτο για να μου πεις αν ειναι σωστο ετσι οπως το εφτιαξα ... εγω θελω να παιρνω το ονομα του αρχειου ανεξαρτητως επεκτασης και να μου εμφανιζει που βρισκεται... πιστευεις οτι ετσι οπως το εγραψα σε προηγουμενο post μπορει να δουλεψει? αλλιως τι μετατροπες πρεπει να κάνω.
Σελίδα 1 από 2 (28 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems