none
Problème création dossier RRS feed

  • Question

  • Bonjour,

    J'ai un problème, je veut récupérer des bytes et convertir ces bytes pour créer le nom d'un dossier :

    byte[] abcdef = new byte[] { 0x30, 0x31, 0x32 };
                string bcd = UnicodeEncoding.Default.GetString(abcdef);
                var folder = Directory.CreateDirectory("C:\\"+bcd);

    J'ai mis un exemple pour être plus clair, cela ne fonctionne pas pour moi. Et si le tableau de bytes est vide, un nom aléatoire ou prédéfini se génère.

    Une fois ce dossier renommé, j'aimerais l'upload sur un serveur, mais je n'ai jamais fait ça pour l'instant et je n'ai aucune idée de comment faire.

    Merci de me venir en aide.



    • Modifié Rousselin dimanche 23 février 2014 15:09
    dimanche 23 février 2014 13:51

Réponses

Toutes les réponses

  • Bonjour,

    J'ai mis un exemple pour être plus clair, cela ne fonctionne pas pour moi.
    Cela fonctionne sans aucun problème sur mon ordinateur. C'est peut-être un problème de droit ? Essayer d'exécuter votre application en Administrateur...

    Et si le tableau de bytes est vide, un nom aléatoire ou prédéfini se génère.
    J'ai du mal à comprendre votre besoin,  c'est ce que vous voulez faire ? Ou ce que vous obtenez ? Car si le tableau est vide, vous obtiendrez une chaîne vide et donc un chemin égal à "C:\"

    Une fois ce dossier renommé
    Renommé ? Le dossier n'est pas renommé il est crée ? Non ? Sinon, PRECISEZ clairement votre demande !

    J'aimerais l'upload sur un serveur, mais je n'ai jamais fait ça pour l'instant et je n'ai aucune idée de comment faire.
    En utilisant quel protocole ? FTP ? WebDav ? Un accès via un chemin UNC ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    dimanche 23 février 2014 17:01
    Modérateur
  • Je souhaite créer un dossier portant un nom récupéré, si le tableur est vide alors un nom se génère automatiquement, et je souhaite utiliser le protocole FTP, pour mon code je me suis mal exprimé

    byte[] abcdef = new byte[] { 0x31, 0x00, 0x32 };

    car je suis en Unicode

    Pour mon dossier, la partie du code pour récupérer le nom souhaité est déjà fait. Et comme c'est des bytes Unicode, ça met une erreur lors de la création du dossier, j'essaye d'être clair.

    Cordialement
    • Modifié Rousselin dimanche 23 février 2014 17:36
    dimanche 23 février 2014 17:17
  • Bonjour,

    Quelle erreur obtenez vous exactement ? A quel endroit ?

    Pour envoyer un fichier en FTP utilisez la méthode UploadFile() de la classe WebClient : http://msdn.microsoft.com/fr-fr/library/36s52zhs.aspx

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    dimanche 23 février 2014 18:34
    Modérateur
  • Je ne sais pas exactement, ça fonctionne si le byte data ne contient pas de 0x00, sinon ça met erreur :

    Une exception non gérée du type 'System.ArgumentException' s'est produite dans mscorlib.dll

    Informations supplémentaires : Caractères non conformes dans le chemin d'accès.

    dimanche 23 février 2014 19:02
  • Bonjour,

    Certains caractères ne sont pas autorisés dans les chemins de fichiers/répertoires Windows. Les caractères interdits se trouvent dans le tableau retournés par la méthode GetInvalidPathChars() : http://msdn.microsoft.com/fr-fr/library/system.io.path.getinvalidpathchars(v=vs.110).aspx

    Comme vous pouvez le constater dans la documentation, le caractère 0x00 (code 0) n'est pas supporté par Windows.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    • Marqué comme réponse Aurel Bera mercredi 26 février 2014 07:29
    dimanche 23 février 2014 19:54
    Modérateur
  • Comment je suis censé résoudre mon problème donc ? Il n'y a pas moyen de supprimer ces 0x00, avant qu'ils ne soient pris en compte ? Car ce que je cherche à faire est de prendre un texte codé en unicode pour nommer un dossier.
    • Modifié Rousselin dimanche 23 février 2014 22:06
    dimanche 23 février 2014 20:19
  • Bonjour,

    Dans ce cas essayez de supprimer ou remplacer les caractères interdits :

    byte[] abcdef = new byte[] {  };
    string bcd = UnicodeEncoding.Default.GetString(abcdef);
    
    foreach(char caractèreInterdit in Path.GetInvalidPathChars())
    {
        bcd = bcd.Replace(caractèreInterdit.ToString(), "");
    }
    
    var folder = Directory.CreateDirectory("C:\\" + bcd);

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    dimanche 23 février 2014 22:40
    Modérateur
  • Merci, j'ai finalement réussi à obtenir ce que je voulais

    Cordialement

    lundi 24 février 2014 10:19
  • Bonjour

    N'oubliez pas svp de marquer la réponse qui vous a résolu le problème.

    Merci!
    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 24 février 2014 10:57