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

C# Discussion :

lecture invisible Substring


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut lecture invisible Substring
    Bonjour, je développe un petit programme pour générer des scripts de mise a jour de répertoire. Pour cela je récupère une liste des fichiers d'un répertoire via la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @echo off
    dir>>log(nyana).txt
    @echo off
    Ceci me permet de récupérer un fichier texte sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    05/03/2008  18:13               822 Accesskey.bmp
    29/03/2005  10:50         1ÿ505ÿ550 accueil 72 dpi2.bmp
    05/03/2008  18:14         1ÿ505ÿ550 accueil.bmp
    05/03/2008  18:14           202ÿ098 accueil1.bmp
    05/03/2008  18:14           270ÿ978 acta.jpg
    02/04/2004  12:06         1ÿ808ÿ142 Actxsamp.exe
    05/03/2008  18:14             6ÿ322 acura.bmp
    Puis dans mon programme en C# j'utilise un Substring pour récupérer le nom de chaque fichier. Seulement là arrive mon problème :

    Le caractère "ÿ" est lu comme invisible par la méthode substring. Ce qui fait que sur les lignes où il y a plusieurs "ÿ" je ne récupère pas entièrement le nom de fichier vue que la ligne est plus courte (à cause de ce caractère "inexistant" à la lecture).

    Donc si ce cas est déjà arrivé à quelqu'un ou si une personne sais comment palier à cela, vous etes les bienvenues sur ce topic .

    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    Bonjour,
    je ne sais pas pourquoi ça pose un problème, mais tu peux toujours le contourner en faisant un split avec comme caractère de séparation l'espace. Le dernier élément du tableau résultat du split sera le nom du fichier.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    essaie de changer l'Encoding utilisé pour lire le fichier, par exemple Encoding.ASCII

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    Ha oui bien vu ^^, j'avais pas dutous pensé au split.
    Seulement j'aimerai quand meme savoir pourquoi un fichier de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    05/03/2008  18:13               822 Accesskey.bmp
    29/03/2005  10:50         1ÿ505ÿ550 accueil 72 dpi2.bmp
    05/03/2008  18:14         1ÿ505ÿ550 accueil.bmp
    05/03/2008  18:14           202ÿ098 accueil1.bmp
    05/03/2008  18:14           270ÿ978 acta.jpg
    02/04/2004  12:06         1ÿ808ÿ142 Actxsamp.exe
    05/03/2008  18:14             6ÿ322 acura.bmp
    Est lu comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    05/03/2008  18:13               822 Accesskey.bmp
    29/03/2005  10:50         1505550 accueil 72 dpi2.bmp
    05/03/2008  18:14         1505550 accueil.bmp
    05/03/2008  18:14           202098 accueil1.bmp
    05/03/2008  18:14           270978 acta.jpg
    02/04/2004  12:06         1808142 Actxsamp.exe
    05/03/2008  18:14             6322 acura.bmp

    Ou, derniere question, pourquoi il m'a insérer des vieux "ÿ" pour combler les espace sur la taille du fichier.

  5. #5
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Je suis étonné que le split convienne puisqu'il peut y avoir des espaces dans les noms de fichiers (ou alors, il faut reconstruire le nom en prenant les chaînes à partir de la quatrième, ce qui n'est pas terrible...).
    Je rejoins tomlev sur l'encoding.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    oui justement c'est ce que j'allais dire je viens d'essayer le "split", et comme le fichier est plein d'espace je pense que ça me donne des colonnes fantômes.

    Sinon pour l'encoding comment ca se passe ?
    Il est possible de la faire par une simple commande?

    Merci

  7. #7
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    Citation Envoyé par Pinkwyzard Voir le message
    Sinon pour l'encoding comment ca se passe ?
    Pour l'encoding, c'est au moment où tu lis ton fichier, tu choisis l'encodage.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Sinon pour l'encoding comment ca se passe ?
    Tu le spécifies dans le constructeur du StreamReader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamReader reader = new StreamReader(fileName, Encoding.ASCII);

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Par contre si c'est juste pour récupérer le listing d'un répertoire, il y a plus simple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[] files = Directory.GetFiles(path);
    Voir aussi les classes Directory, File, FileSystemInfo, FileInfo, DirectoryInfo (namespace System.IO)

  10. #10
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Un truc tout bête : as-tu pensé à utiliser les fonctionnalités offertes par le framework pour récupérer les données dont tu as besoin ? Il y a des tas de classes (DirectoryInfo, ...) qui permettent de lister des fichiers, d'obtenir leur taille, etc.

    [edit] trop lent

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    oui j'ai utiliser cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string[] files = Directory.GetFiles(path);
    Seulement pour le traitement je ne trouver pas comment faire pour juste recuperer le nom du fichier et pas chemin+nom.

  12. #12
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Tu peux utiliser soit DirectoryInfo.GetFiles() pour obtenir des FileInfo, soit Path.GetFileName() pour extraire le nom du fichier.

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Pinkwyzard Voir le message
    oui j'ai utiliser cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string[] files = Directory.GetFiles(path);
    Seulement pour le traitement je ne trouver pas comment faire pour juste recuperer le nom du fichier et pas chemin+nom.
    Tu peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DirectoryInfo dir = new DirectoryInfo(path);
    FileInfo[] files = dir.GetFiles();
    foreach(FileInfo f in files)
    {
        Console.WriteLine(f.Name)
    }
    Si tu es en 3.5 tu peux même faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DirectoryInfo dir = new DirectoryInfo(path);
    string[] files = from f dir.GetFiles()
                          select f.Name;

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    Merci beaucoup !!

    Ça passe sans problème maintenant.

    J'avais utiliser une autre solution qui fonctionné aussi, mais qui étais plus ...

    En gros dans ma commande de listing j'ai utilisé l'option "-c" pour désactiver les séparateur de milliers.

    Merci de votre patiente en tous cas ^^.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/07/2002, 11h51
  2. Pb Lecture de bitmap monochrome
    Par Loïc38 dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/07/2002, 18h24
  3. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24
  5. Réponses: 8
    Dernier message: 05/06/2002, 11h55

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