Faire Java Swing Accepter le chemin d'entrée de l'utilisateur dans Windows (copier coller le chemin de l'explorateur)


Pourriez-vous m'aider à trouver une solution à ce problème?

J'essaie de créer une interface graphique java avec des composants Swing

L'interface est censée accepter un chemin Windows vers un certain fichier et déclencher un ensemble de fonctions sur le fichier après avoir appuyé sur le bouton Soumettre

En ce moment, j'ai créé le composant pour obtenir l'entrée utilisateur en tant que:

JTextField introducedPath1 = new JTextField(50);

J'ai essayé de changer le chemin Windows par défaut obtenu en copiant-collant le chemin de l'explorateur dans un fichier accepté chemin:

File file;
String makeCanonicalPath=introducedPath1.getText().toString();
            makeCanonicalPath=makeCanonicalPath.replaceAll("\\", "/");
            file = new File(makeCanonicalPath);

Mais je continue à obtenir cette erreur:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

\
 ^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)

Dont je suppose qu'il est causé par le chemin par défaut dans Windows(ex:L:\practice\test) obtenant son '\' interprété comme des séquences d'échappement.

Toute aide ou suggestion sera appréciée

Author: user1944955, 2013-01-03

1 answers

Avec replaceAll, vous devez utiliser l'échappement java pour les expressions régulières, donc

makeCanonicalPath.replaceAll("\\\\", "/");

Parce que ce n'est pas une recherche-remplacement de texte, mais une expression régulière.

Si vous voulez remplacer la recherche textuelle, utilisez apache commons string replace , par exemple.

De plus, une alternative consiste à utiliser replace () - http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replace (char , char) au lieu de replaceAll-il remplacerait toutes les occurrences sans en utilisant regex, et puisque vous n'avez qu'un seul caractère à remplacer, cela fonctionnerait.

 3
Author: eis, 2013-01-03 19:06:25