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 :

Copie de fichiers - PATH > 260


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut Copie de fichiers - PATH > 260
    Bonjour à tous,

    Je cherche à copier des fichiers qui ont un chemin supérieur à 260 caractères.
    Si j'ai bien compris, File.Copy ne permet pas ce genre d'action. Il faut passer par Win32.CopyFile pour le faire à condition de précéder le chemin par .

    Chez moi ça ne marche pas. Le code erreur en retour est 0x3 (path non trouvé) alors que si je copie le chemin dans une fenêtre explorateur j'y accède bien.

    Les fichiers sont stockées dans une structure DFS. Est-ce que cette structure nécessite un traitement particulier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string src  = @"\\?\mon_serveur\mon_repertoire\mon_fichier.ext";
     
    if (Kernel32.CopyFile(src, f2c.getDest, true))
    {
    	Console.WriteLine("[SUCCESS] Copie du fichier {0} vers {1}", src, f2c.getDest);
    	list_updSQL.Add(String.Format(@"UPDATE dbo.Fichier SET NOM_FICHIER_COPIE = '{0}' WHERE HASH_FICHIER ='{1}' ;", src, f2c.getHash));
    }
    else
    {	
    	Console.WriteLine("[FAILED][ERROR {0}] Copie du fichier {1} vers {2}", Kernel32.GetLastError().ToString(), src, f2c.getDest);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
    public static extern bool CopyFile(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);
     
    [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
    public static extern UInt32 GetLastError();

    Si vous avez des idées ou pistes, merci beaucoup

    Bien cordialement
    lephotographe

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2015
    Messages : 26
    Points : 46
    Points
    46
    Par défaut
    Avez-vous essayé avec le préfixe "\\?\UNC\" ?

    Ce qui donnerait, pour vous, @"\\?\UNC\mon_serveur\mon_repertoire\mon_fichier.ext"

    Source: MSDN: Naming Files, Paths, and Namespaces - Maximum Path Length Limitation

  3. #3
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut copie-fichiers-path > 260 caractères
    J'ai associé une lettre au nom du serveur
    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \\?\Y:\MonRépertoire\...
    De ce fait, là ça passe

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

Discussions similaires

  1. Copie de fichier vers un path réseau
    Par Yann F-FLYC dans le forum Ruby
    Réponses: 1
    Dernier message: 28/10/2011, 16h25
  2. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/12/2004, 22h39
  3. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows
    Réponses: 5
    Dernier message: 20/12/2004, 22h35
  4. [Kylix] Copie de fichier...
    Par paty.olivier dans le forum EDI
    Réponses: 1
    Dernier message: 23/06/2004, 12h55
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23

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