外部ファイルからデータを読み込む
7.3 外部ファイルからデータを読み込む
前節ではコンテキストパスを利用したリンク先のパスの指定方法を学習しましたが、ファイルを読み込む際、コンテキストパスからの相対パスではファイルの位置を特定できず、データを読み込むことができませんでした。
このような場合は、getRealPath()メソッドを利用してファイルの物理パスを取得し、ファイルの位置を特定します。
物理パスを取得しファイルを読み込むプログラム
JSPファイル内で外部ファイルの物理パスを取得しデータを読み込みます。物理パスの取得方法について学習しましょう。
実行結果
アプリケーション構成
➢ inputFile.jsp① 親フォルダの入力または選択 :web_basic/src/main/webapp/view/ch07
② ファイル名 :inputFile.jsp
③ アクセスURL :http://localhost:8080/web_basic/view/ch07/inputFile.jsp
<%@page contentType= "text/html; charset=UTF-8" %> <%@page import= "java.util.*, java.io.*" %> <% String path = application.getRealPath("/file/data.csv"); Scanner sin = new Scanner(new File(path)); %> <html> <head> <title>ファイルからデータを取得するJSP</title> </head> <body> <% out.print(path + "<br>"); while((sin.hasNextLine())){ out.print(sin.nextLine() + "<br>"); } %> </body> </html>
➢ data.csv① 親フォルダの入力または選択 :web_basic/src/main/webapp/file
② ファイル名 :data.csv
解説
このプログラムではファイルのパスの指定にgetRealPath()メソッドを利用しています。
このメソッドは、引数に渡されたWebアプリケーション上のファイルのパスを、物理パスと呼ばれるパスに変換します。実行結果画面からも分かりますが、物理パスとはパソコンのドライブ名からファイルがある場所までの絶対パスになります。
図 7.3.1: data.csvファイルの物理パス
これは、Webアプリケーション上の特定の位置に配置されたファイルに対し、読み込み処理や書き込み処理を行う場合によく利用されるメソッドなので覚えておいてください。
ポイント
ファイルの読み込みなどを行う場合は、getRealPath()メソッドを利用する。