回答編集履歴

4

使用するAPIの参照先を追加した。

2016/01/07 05:02

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -61,3 +61,29 @@
61
61
  ```
62
62
 
63
63
 
64
+
65
+ ---
66
+
67
+ (2016/1/7 13:52追記)
68
+
69
+ 使用したAPIのJavaDocを引用しておきます。
70
+
71
+ [javax.servlet.ServletContext#getRealPath](https://mergedoc.osdn.jp/tomcat-servletapi-5-ja/javax/servlet/ServletContext.html)
72
+
73
+ > 与えられた仮想パスに対応する実際のパスを String オブジェクトで返します。 例えば、"/index.html" というパスが与えられたとするとサーバのファイルシステム上の絶対パスを返します。 そのパスは "http://host/contextPath/index.html" がリクエストされたときに提供するファイルのパスです。 ここで、contextPath というのはこの ServletContext のコンテキストパスを意味しています。
74
+
75
+
76
+
77
+ これはそのまま分かるかと思います。
78
+
79
+
80
+
81
+ [java.lang.Class#getResourceAsStream](http://docs.oracle.com/javase/jp/8/docs/api/java/lang/Class.html#getResource-java.lang.String-)
82
+
83
+ > 指定された名前のリソースを探します。指定されたクラスに関連したリソースを検索するルールは、クラスのクラス・ローダーを定義して実装されます。このメソッドは、このオブジェクトのクラス・ローダーに委譲されます。
84
+
85
+
86
+
87
+ 記述はちょっと分かりにくいですが、
88
+
89
+ クラスパスに含めたファイルから内容を読み込む方法と思えばよいと思います。

3

File\.saparatorについて追記した。

2016/01/07 05:01

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -30,11 +30,13 @@
30
30
 
31
31
  ---
32
32
 
33
- (2016/01/07 13:32追記)
33
+ (2016/01/07 13:42修正)
34
34
 
35
35
  `FileReader`を使うのであれば、以下のようにすれば読み込めそうです。
36
36
 
37
- (Apache Tomcat/8.0.26で確認)
37
+ Apache Tomcat/8.0.26で確認しました。
38
+
39
+ 注意点としては、これらの方法を使うのであれば、`File.separator`でなく`"/"`を使う必要があります。
38
40
 
39
41
 
40
42
 

2

webアプリでのファイル読み込みについて追記した。

2016/01/07 04:43

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -25,3 +25,37 @@
25
25
  とあり、要するにあるパスの内部を区切る文字がseparatorで、
26
26
 
27
27
  複数のパス同士を区切る文字がpathSeparatorです。
28
+
29
+
30
+
31
+ ---
32
+
33
+ (2016/01/07 13:32追記)
34
+
35
+ `FileReader`を使うのであれば、以下のようにすれば読み込めそうです。
36
+
37
+ (Apache Tomcat/8.0.26で確認)
38
+
39
+
40
+
41
+ ```lang-java
42
+
43
+ new FileReader(request.getServletContext().getRealPath("/WEB-INF/classes/csvData/tbl_user.csv"))
44
+
45
+ ```
46
+
47
+ (requestは、HttpServletRequestです。)
48
+
49
+
50
+
51
+ ただ、Tomcat以外で、ファイルとして展開されない場合もあるので、
52
+
53
+ 以下の方法のほうが良いかもしれません。
54
+
55
+ ```lang-java
56
+
57
+ new InputStreamReader(this.getClass().getResourceAsStream("/csvData/tbl_user.csv"))
58
+
59
+ ```
60
+
61
+

1

記述を詳細化した。

2016/01/07 04:38

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -1,3 +1,27 @@
1
1
  `File.pathSeparator`でなく、`File.separator`を使ってください。
2
2
 
3
- `File.pathSeparator`には、クラスパスなどの区切りに使う、";"や":"などが格納されています。
3
+ `File.pathSeparator`には、クラスパスなどの環境変数の区切りに使う、";"や":"などが格納されています。
4
+
5
+
6
+
7
+ [Java8のJavaDoc](http://docs.oracle.com/javase/jp/8/docs/api/java/io/File.html)を見ると、
8
+
9
+ pathSeparator、separatorの説明は詳細が書かれていないのですが、
10
+
11
+
12
+
13
+ pathSeparatorCharの説明として、
14
+
15
+ > システムに依存するパス区切り文字です。このフィールドは、システム・プロパティpath.separatorの値の最初の文字を格納するように初期化されます。この文字は、パス・リストとして渡されるファイルのシーケンス中のファイル名を区切るために使用されます。UNIXシステムの場合、この区切り文字は':'です。Microsoft Windowsシステムでは';'です
16
+
17
+
18
+
19
+ separatorCharの説明として、
20
+
21
+ > システムに依存するデフォルトの名前区切り文字です。このフィールドは、システム・プロパティfile.separatorの値の最初の文字を格納するように初期化されます。UNIXシステムの場合、このフィールドの値は'/'、Microsoft Windowsシステムの場合は'\\'です。
22
+
23
+
24
+
25
+ とあり、要するにあるパスの内部を区切る文字がseparatorで、
26
+
27
+ 複数のパス同士を区切る文字がpathSeparatorです。