begin process at 2012 02 10 15:48:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Fichier & Disque

 > 

System.IO.PathTooLongException


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

System.IO.PathTooLongException

vendredi 5 octobre 2007 à 12:11:07 | System.IO.PathTooLongException

PurBonheur

Bonjour, dans une ligne comme celle ci :

FileInfo infoFichierLocal = newFileInfo(pathLocal + cheminLocal);

Il m'arrive d'obtenir une exception de type : System.IO.PathTooLongException.
pathLocal + cheminLocal fait 261 caractères, donc logique que l'exception sois levé. Mais pourquoi j'arrive à aller jusqu'au fichier en utilisant l'explorateur de fichiers de Windows ?  Ce fichier éxiste bien, sont chemin dois donc faire moins de 260 caractères !!! Quand j'essai de renomer le fichier en question je vois qu'il reste juste assez de place pour 3 caractères, après windows refuse la frappe au clavier.

Comment je peut acceder à un fichier sur le disque dur, en sachant que sont chemin + nom de fichier + extension sont très proche de la limite maximal ?

Merci de vos réponses.

A plus.
vendredi 5 octobre 2007 à 13:43:59 | Re : System.IO.PathTooLongException

rodcobalt22

Je n'ai pas vraiment de solution a t'apporter, mais est ce qu'avec un .cmd qui copie ce fichier ailleurs plante aussi ?
Si il ne plante pas, regarde quelle API copie les fichiers et vois si tu peux l'utiliser.

Enfin, je dis peut être quelques chose de très crade

RodCobalt22, vous salue bien
Pensez au TAG résolu ! Ainsi les réponses seront plus facile à trouver et les serial Helper iront plus vite
 PS : Pardonnez mes fautes d'orthographe (All
vendredi 5 octobre 2007 à 13:47:10 | Re : System.IO.PathTooLongException

Yxion

Membre Club
Il te faut obtenir le nom du fichier court, dans le systeme de fichier, tu as deux formats, un long, pour nous les hommes, et un cours, comme on peux voir dans les commandes DOS


I love .net
vendredi 5 octobre 2007 à 14:24:15 | Re : System.IO.PathTooLongException

Yxion

Membre Club

Pour obtenir le nom cours d'un fichier :

        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError=true)]
        static extern int GetShortPathName(
            [MarshalAs(UnmanagedType.LPTStr)] string lpszLongPath,
            [MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpszShortPath,
            int cchBuffer);
        public static string ToShortPathName(string longName)
        {
            StringBuilder shortNameBuffer = new StringBuilder(256);
            int bufferSize = shortNameBuffer.Capacity;

            int result = GetShortPathName(longName, shortNameBuffer, bufferSize);

            return shortNameBuffer.ToString();
        }

Je ne sais pas s'il existe la même tout fait en Managed...


I love .net

vendredi 5 octobre 2007 à 17:26:04 | Re : System.IO.PathTooLongException

PurBonheur

Salut, Yxion, ton code me renvoi des chaines vides pour les chemins qui me posaient problèmes.

Dommage, ca avais l'air prometeur.

A plus.
vendredi 5 octobre 2007 à 19:09:11 | Re : System.IO.PathTooLongException

Yxion

Membre Club
C'est bizarre, ca devrait te renvoyer la chaine de la table du système de fichier... tu l'as testée en placant directement ton chemin complet @"C:\...exe" sans montages, juste en prenant le chemin dans l'explorateur?


I love .net
dimanche 7 octobre 2007 à 14:57:47 | Re : System.IO.PathTooLongException

PurBonheur

Salut, Ton code marche bien mais seulement avec les chemins courts.

De plus, après y avoir regardé de plus près, j'ai trouvé la source de mon erreure.

Je recupère de chemin de moins de 260 caractères, du genre "C:\blablabla\ ...\...\..;\Nom de fichiers.txt" et j'essai de le sauvegarder sur un autre ordinateur. Du coup ca me donnais des chemin du genre : "10.0.0.4\Lecteur de sauvegarde\blablabla\ ...\...\..;\Nom de fichiers.txt". Alors ca pouvais pas marché.

A plus.
dimanche 7 octobre 2007 à 15:09:55 | Re : System.IO.PathTooLongException

coq

Administrateur CodeS-SourceS
Salut,

Les chemins longs (préfixés par "\\?\") ne sont effectivement pas supportés.
Si ton but est la copie de fichier, tu peux peut être appliquer un des exemples donnés sur le blog du team BCL :
[ Lien ]
[ Lien ]



/*
coq
MVP Visual C#
CoqBlog
*/


Cette discussion est classée dans : fichier, system, io, caractères, pathtoolongexception


Répondre à ce message

Sujets en rapport avec ce message

ouverture d'un fichier image [ par Fildomen ] salutdans mon prog, je dois ouvrir un fichier jpg, pour le resauvegarder dans un autre emplacement, le problème c'est que quand je le lit, et je l'ecr Erreur lecture flux http et ecriture fichier [ par fcolo ] Bonjour,je suis actuellement en train de travailler sur des caméra AXIS pour essayer de récupérer le flux M Lecture fichier CSV : caractère é è ë ê à,... effacés [ par Stingray_fr_88 ] je n'arrive pas à lire un fichier csv les caractères spéciaux disparaissent comme les é è ë ê à,... voici mon code : System.IO.StreamReader sr = Sys System.Configuration [ par francesdereve ] J'ai modifie mon fichier app.config ainsi que le fichier .exe.config par le biais de fichier tout a marché,mais quand la prochaine fois je redemarre problème lectures fichier xml avec code c# (problèmes lié aux caractères accentués) [ par lalie45 ] bonjour, j'ai un fichier xml, que je lis via la méthode readXml(en c#), et je mets les données récupérées dans un dataset. Cependant, quand le fichie Compression.IO [ par DLX973 ] Salut  à tous!Voila j'ai developpez une petite application qui permet de compresser et décompreser des fichiers et des repertoire en m'inspirant des d XmlSerialize espaces blancs [ par alicvb ] Bonjour,Voilà mon problème : j'essaie de sauvegarder une classe en xml via les methode Serialize et Desserialize de la classe XmlSerializer.Je n'ai pa passer un type Stream comme paramère dans un Service Web [ par Verrisan ] Bonjour tout le monde,j'ai un Service Web A dans lequel j'ai une méthode "put" qui a les paramètres suivants:put(Stream param1, string param2, string Taille d'un répertoire d'une machine distante [ par madjic ] Bonjour,Je cherche le moyen de lire la taille occupée par un répertoire sur le disque dur d'une machine distante.En local, celà est simple:internal<fo Fichier Resource [ par aurelie ] Bonjour,J'aimerais modifier dynamiquement un fichier resx, mais je n'y arrive pas. Voici mon code : FileStream fs = new <FONT color=#00


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales