※ ChatGPTを利用し、要約された質問です(原文:ファイルまでのパス文字列からの変換について)
ファイルまでのパス文字列からの変換について
このQ&Aのポイント
JavaScriptからイメージファイルのパスを受け取り「\」の部分を「/」に変換後、exists()関数でそのファイルが存在するかを調べてからファイルを削除する処理を実装したが、exists()関数が「false」しか返ってこない。
HTML側で戻り値「imageFilePath」の中身を確認すると、パスの「\」の部分は「/」に変換されている。また、直接パスを指定するとexists()関数は「true」を返す。
解決策は、imageFilePathを処理せずに直接パスを指定するか、バックスラッシュの代わりにスラッシュを使用してexists()関数を実行すること。
以下はJavaScriptからイメージファイルのパスを受け取り「\\」の部分を「/」に変換後
imageFile.exists()でそのファイルが存在するかを調べてからファイルを削除するものですが
結果がexists()の結果が「false」しか返ってきません。
しかしHTML側で戻り値「imageFilePath」の中身を見てみると「\\」の部分は「/」に変換されています。
また直接JavaScript側でremoveThumbnailImage()を呼び出す時に
removeThumbnailImage("C:/Users/Admin/workspace/website/images/test.jpg")の様に直接パスを指定又はJava側でimageFilePath = "C:/Users/Admin/workspace/website/images/test.jpg"の様にするとexists()では「true」を返してきます。
どうすれば解決するでしょうか?
public static String removeThumbnailImage(String imageFilePath){
//// 受け取ったパスの「\\」を「/」に変換するが「false」しか返ってこない
//imageFilePath = imageFilePath.replaceAll("\\\\", "/");
////以下の場合は「true」を返す(\\はバックスラッシュ2つ)
//imageFilePath = "C:\\Users\\Admin\\workspace\\website\\images\\test.jpg";
//imageFilePath = "C:/Users/Admin/workspace/website/images/test.jpg";
//StringBuffer sb = new StringBuffer();
////以下の処理でも結果は「false」
/*StringBuffer sb = new StringBuffer();
for(int i=0;i<imageFilePath.length();i++){
switch(imageFilePath.charAt(i)){
case '\\': sb.append("/"); break;
default : sb.append(imageFilePath.charAt(i));
}//end switch
}//end for*/
/////画像を保存したファイルまでのパスでFileオブジェクト生成
File imageFile = new File(sb.toString());
try{
////イメージファイルが存在するか調べる
if(imageFile.exists()){
////イメージファイルを削除
//imageFile.delete();
return "true";
}else{
return imageFilePath;
}//end if
}catch(Exception e){
e.printStackTrace();
}//end try
}