IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Enregistrer et relire une METADATA d'un fichier


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut Enregistrer et relire une METADATA d'un fichier
    Bonjour à tous,
    Je souhaiterais implémenter une nouvelle fonction dans mon logiciel. Celui-ci me sert en particulier pour enregistrer une liste de plans mais actuellement je n'ai aucun lien entre la base et les fichiers physiques des plans.
    l'idée est d’utiliser les MATADADA des fichiers Windows pour appliquer un mot clé (ou un Tag) sur le fichier de façon a pouvoir l’identifier dans ma base et ensuite contrôler les événements qui peuvent se produire sur ce fichier (Modification, suppression, déplacement, copie....etc).

    Savez vous si on peux créer ou enregistrer dans une MATADATA et pouvoir relire cette METADATA en VB.NET. Par exemple je lorsque crée un fichier "Plan0001.dwg", je souhaite lui appliquer la METADATA "TAG001".

    je suis ouvert pour tout autres propositions car je suis en phase d'essais et étude de faisabilité. (Pour info, je pense utiliser le composant FileSystemWatcher pour intercepter les événements en temps réel + une méthode de synchronisation manuelle dans le cas ou des changements ont eut lieux pendant que le logiciel était fermé).

    Questions subsidiaire : Les Metadata sont t'elles conservées lorsque 'on déplace le fichier sur un disque ext2 ou ext3 (Linux).

    Merci beaucoup si vous pouvez m'aider.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Bonjour, j'ai trouvé ceci qui permet de lire les metadada mais je n'ai pas trouvé la possibilité d’écrire ou même d'en créer une nouvelle.

    Il faut importer la référence COM : "Microsoft Shell Controls And Automation".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Imports Shell32
    Sub Main()
            Dim FileName as String
            FileName = "C:\temp\testfile.wtv"
            Dim Properties As Dictionary(Of Integer, KeyValuePair(Of String, String)) = GetFileProperties(FileName)
            For Each FileProperty As KeyValuePair(Of Integer, KeyValuePair(Of String, String)) In Properties
                Console.WriteLine("{0}: {1}", FileProperty.Value.Key, FileProperty.Value.Value)
            Next
    End Sub
     
        Public Function GetFileProperties(ByVal FileName As String) As Dictionary(Of Integer, KeyValuePair(Of String, String))
            Dim Shell As New Shell
            Dim Folder As Folder = Shell.[NameSpace](Path.GetDirectoryName(FileName))
            Dim File As FolderItem = Folder.ParseName(Path.GetFileName(FileName))
            Dim Properties As New Dictionary(Of Integer, KeyValuePair(Of String, String))()
            Dim Index As Integer
            Dim Keys As Integer = Folder.GetDetailsOf(File, 0).Count
            For Index = 0 To Keys - 1
                Dim CurrentKey As String = Folder.GetDetailsOf(Nothing, Index)
                Dim CurrentValue As String = Folder.GetDetailsOf(File, Index)
                If CurrentValue <> "" Then
                    Properties.Add(Index, New KeyValuePair(Of String, String)(CurrentKey, CurrentValue))
                End If
            Next
            Return Properties
        End Function
    Quelqu'un a une idée ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Bonsoir, je fait remonter ce post, on ne sait jamais et j'espère ne pas être hors sujet mais je fait tout en VB.NET.
    Avant tout je rappelle ce que je cherche a faire : Le but est d'intercepter (soit en temps réel soit par une méthode lancée manuellement), les modifications qui peuvent se produire sur un fichier (renommage, modifications, déplacement...etc) et remonter ces informations dans une base de donnée.
    Pour cela j'ai besoin d'une sorte de "signature" du fichier qui me permet de le retrouver même si celui-ci a été déplacé (sur clé USB ou autres), ainsi lors de son retour sur le disque surveillé par FileSystemWatcher ou par la méthode manuelle de l'appli je dois pouvoir le retrouver et enregistrer les modifications.

    Comme signature j'ai trouvé l'extension du fichier associé a la "date de création" du fichier (exemple :txt19/09/2013 20:02:35) mais il y a une faille, cette date est modifiée lorsque l'on déplace le fichier en dehors du disque local du PC. Il y a aussi la "date de modification" mais la aussi cette date est modifié lorsque l'on modifie le fichier depuis le logiciel qui lui est associé (par exemple : Depuis Notepad pour un fichier .txt).

    J'ai déjà implémenté tout ces mécanismes dans mon logiciel et a part cette faille tout fonctionne très bien, j’aurais besoins d'une "signature" plus fiable que la date de création.
    Je serais très intéressé si quelqu'un a une idée.

Discussions similaires

  1. [AC-2010] Ajout d'enregistrement lors d une exportation ver un fichier texte
    Par baloo42400 dans le forum Access
    Réponses: 4
    Dernier message: 10/04/2014, 15h51
  2. Réponses: 3
    Dernier message: 13/02/2007, 17h54
  3. Comment enregistrer une string dans un fichier
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/09/2005, 14h52
  4. ENREGISTRER UNE IMAGE OU UN FICHIER .DOC
    Par manudja dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/08/2005, 13h32
  5. Enregistrer le résultat d'une requête dans un fichier Excel
    Par Isa31 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo