10
votes

C # - La façon la plus simple d'analyser le nom de fichier avec des espaces, par exemple. "C: \ Test \ Fichier avec spaces.txt"

J'essaie de passer un chemin de fichier complet à FFMPEG.

@"C:\TestFolder\Input\Friends - Season 6 - Gag Reel.avi";


3 commentaires

"Utiliser" de quelle manière? Quel est le problème avec les espaces maintenant?


Dans quel programme nourrissez-vous le fichier de film?


Question mise à jour - Désolé gars


6 Réponses :


7
votes

système.io. chemin fournit plusieurs Méthodes de manipulation de noms de fichiers ...



34
votes

La seule fois, vous devez généralement faire une conviction spéciale avec des noms de fichiers qui ont des espaces sont lorsque vous les transmettez à des outils ou à des formats externes. Si vous construisez une liste d'arguments pour une exécutable externe, par exemple, tout ce que vous avez à faire est de citer le chemin: xxx

... qui entraînera cette ligne de commande:

programme.exe "C: \ TestFolder \ Entrée \ Amis - Saison 6 - Gag Reel.avi "


1 commentaires

Emballage de la liste d'arguments finale avec "\" "+ chemin +" \ "" a travaillé un régal. Question nooby je sais: p



5
votes

En général, les chemins de fichiers passés sous forme d'arguments sur la ligne de commande exigent que le chemin soit entouré de guillemets.

Si vous parlez d'accepter des chemins de fichiers comme argument de votre programme, il est plus facile de demander aux utilisateurs de des chemins de citation. De cette façon, l'argument arguments à votre méthode principale contiendra l'ensemble du chemin comme une seule chaîne.

Si vous appelez d'autres programmes et des arguments de dépôt, les chemins de fichiers avec des espaces doivent être cité. xxx


0 commentaires

5
votes

Utilisez-vous FileInfo Classe?

Il contient (presque) tout sur un fichier, y compris des attributs et des versions de fichiers, et vous n'avez pas à vous soucier des espaces ni d'autres caractères non désirés. Tant que le fichier existe, cela fonctionne bien sur FileInfo.

Utilisez-le comme
FileInfo F = Nouveau fichierInfo (FullpathevenWithSpaces);


0 commentaires

-2
votes

Tous les fichiers ont un cadre de chemin court qui est compatible DOS 8.3. Le seul moyen d'obtenir ce nom de fichier est GesthortpathName. La meilleure explication que je puisse trouver est à l'adresse suivante:

http://www.pinvoke.net/default.aspx/kernel32.getshortpathName


0 commentaires

4
votes

Je suis d'accord avec le post ci-dessus. Pour faciliter la tâche, voici le code que vous devez utiliser. À mon humble avis, le seul bon nom de fichier est un nom de fichier sans espace.

là-bas dans le code C # J'ai ceci: xxx

qui ajoute une méthode à votre classe pouvant être utilisée comme ceci:

string goodfilename = ToshortpathName (evilfileName);

Remarque: J'utilise cela dans une interface utilisateur, cela ne me dérange pas d'être sans fil et de réutiliser le StringBuider. Si vous êtes dans un environnement multi-threadé, assurez-vous de tirer l'allocation StringBuilder à l'intérieur de votre méthode.


0 commentaires