Comment échapper à l'barres obliques inverses et l'généré automatiquement caractère d'échappement dans le chemin d'accès au fichier en java
J'ai très petit et simple problème mais je ne reçois pas de solutions.
En fait j'ai un fichier CSV chemin en utilisant le sélecteur de fichier.
Je suis d'entrer les données dans ce format de fichier csv dans la base de données à l'aide de load data local infile requête.
Suppose que mon fichier chemin d'accès est "C:\title.csv"
Quand je l'ai mis dans cette chaîne de requête de l', vous verrez \t combinaison dans le chemin d'accès. Cette \t, qui est en fait une partie du chemin d'accès au fichier et non pas le caractère d'échappement '\t'. Mais le java et mysql considérer comme caractère d'échappement.
puis j'ai essayé de remplacer les " \ " dans le chemin d'accès au fichier de la chaîne avec "\\" utilisation de la ligne de code suivante.
String filepath="C:\title.csv";
String filepath2=filepath.replace("\\","\\\\");
Il n'y a toujours pas d'effet sur le chemin d'accès au fichier et encore considérer le '\t' comme caractère d'échappement.
Donc ma question est comment résoudre ce problème sans en changer le nom du fichier?
Si nous avons du chemin comme
String filepath="C:\new folder\title.csv";
Il prendra en compte les \n et \t comme caractère d'échappement.
comment résoudre ce problème si le nom du fichier ou du dossier dans le chemin d'accès pour cause du caractère d'échappement?
Gardez à l'esprit que si vous voulez utiliser LOAD DATA INFILE le fichier que vous souhaitez traiter doit être sur la machine où le serveur de base de données est hébergée, de sorte que vous devez d'abord télécharger le fichier vers le serveur de base de données et après ce qui s'est passé, vous ne devriez pas la peine pour les chemins d'accès windows (sauf si le serveur est hébergé sur une machine windows)
James DW @ LordDoskias Bonjour les amis! James, j'ai essayé votre solution mais Il donne erreur de compilation quand j'ai mis chemin d'accès.remplacer("\\","\\\"); LordDoskian Mon serveur de base de données et le fichier à la fois sur la même machine et le système d'exploitation windows. Je veux juste faire la filepath="C:\new\title.csv" "c:\\new\\title.csv". comme le fait de remplacer les"\", "\ \ ' fonctionne avec la normale de la ligne de chemin "C:\my\myfile.csv" mais pas au-dessus de chemin d'accès dans lequel s'échapper accidentellement personnage vient avec la combinaison de '\' et le nom du dossier ou le nom de fichier.
Comment avez-vous fait remarquer que Java est en considérant le \n dans votre chemin d'accès au fichier un caractère d'échappement?
Je prends le chemin d'accès dans une variable de chaîne et de savoir String filepath="C:\title.csv" et imprimé sur console alors j'ai essayé de remplacer \ dans le chemin avec chemin d'accès.remplacer("\\","\\\\"); et encore imprimé de la chaîne sur la console pour les deux l'impression qu'il m'a donné la même sortie. Je Vous Remercie.
OriginalL'auteur Param-Ganak | 2011-09-26
Vous devez vous connecter pour publier un commentaire.
Utiliser une double barre oblique en Java littéral de chaîne pour échapper à une barre oblique :
Si l'utilisateur entre une chaîne de caractères dans un JFileChooser, la chaîne variable va contenir tous les caractères saisis par l'utilisateur. L'échappement est nécessaire uniquement lors de l'utilisation de littéraux de Chaîne dans le code source Java.
Et l'utilisation d'une requête préparée pour insérer des chaînes de caractères dans une table de base de données. Cela va échapper les caractères spéciaux et d'éviter L'injection SQL attaques. Lire plus à propos des déclarations préparées à l'avance dans le Java tutoriel sur JDBC.
Si un utilisateur entre un certain chemin dans un JFileChooser, le renvoi du chemin d'accès au fichier contiendra la barre oblique inverse. Vous avez seulement besoin de s'échapper de la barre oblique inverse dans les littéraux de chaîne dans du code Java. Montrez-nous comment vous tester le contenu du fichier chemin d'accès.
Comment dois-je échapper
/
:str.replace(/ <samp>ــ</samp>$/, '')
. (je veux échapper/
dans</samp>
)demandez à votre propre question, avec du vrai code, au lieu d'utiliser un commentaire sur une de 4 ans répondre.
Ok j'ai demandé, mais je suis assez sûr que les gens me donnent beaucoup de downvote ..!
OriginalL'auteur JB Nizet
vous devez utiliser:
peut-être alors vous avez besoin pour échapper à chaque séquence d'échappement comme
filepath.replace("\n", "\\n")
Ankur Mittal oui c'est possible, mais je suis à la recherche d'une plus facile solution parce que dans votre solution, nous devons écrire la ligne pour chaque séquence d'échappement de caractères. Merci!!!!
vous pouvez utiliser apache bibliothèque commune
StringEscapeUtils.escapeJava(str)
Bonjour Ami! est-ce de la bibliothèque est livré avec java ou nous avons pour l'ajouter à l'externe? Cette bibliothèque libre? Merci!!!!
OriginalL'auteur Ankur
String filepath2=filepath.replace("\","\\")
n'est pas valide code -\
est un caractère spécial dans les littéraux de chaîne et doit être échappé:OriginalL'auteur Paul Bellora
Vous devez utiliser échapper dans le premier littéral (
filepath
), par exemple:OriginalL'auteur michael667