前提・実現したいこと
getParameterでテキストファイル名のみを受け取って、
そのファイルが存在すれば中身を表示するというサーブレットを作成したのですが、
存在するファイルの名前を指定しているのにファイルが見つからず、
ローカルホストにアクセスすると
FileNotFoundExceptionとなります。
現在のコードはこちらなのですが、
どこが間違っているのかご教示いただけますと幸いです。
(不足情報ありましたらお知らせいただけますと助かります)
パスを含む指定の仕方をしたときのエラー文だけは正しく出るのですが。。。
発生している問題・エラーメッセージ
ローカルホストにアクセスすると FileNotFoundExceptionと出る
該当のソースコード
ここに言語名を入力
Java
import java.io.;
import java.sql.;
import javax.servlet.;
import javax.servlet.http.;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class test extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html><head></head><body><pre>");
//ファイル名をGetパラメータで受け取ります
String fileName = request.getParameter("fileName");
//Getパラメータで受け取ったファイル名のファイルを読み込みます
File file = new File(fileName);
FileReader filereader = new FileReader(file);
BufferedReader br = new BufferedReader(filereader);
//ファイル名を取得します
String name = file.getName();
out.println(fileName);
out.println(name);
out.println(file);
//取得したファイル名とパラメータでのファイル名が一致する場合はその中身を表示します
if (name.equals(fileName)) {
//テキストを1行ずつ読み取ります
String str = br.readLine();
//ファイルの内容の最後まで読み込みし出力します
while (str != null) {
out.println(str);
str = br.readLine();
}
filereader.close();
}
//ファイルが存在しない場合はエラー文を出力します
else if (!(file.exists())) {
out.println("ファイルが存在しません");
}
//パスを含む名前が指定された場合はエラー文を出力します
else {
out.println("パスが指定されています");
}
}
//例外を管理します
catch (FileNotFoundException e) {
out.println(e);
}
}
}
### 試したこと ・ファイルの格納場所を見直す ・アクセスするURLが正しいか見直す ・誤字脱字がないか どれも確認しましたが間違えてなさそうでした ### 補足情報(FW/ツールのバージョンなど) tomcat XML Servlet を使用しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。