質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

11694閲覧

Paths.get とカレントディレクトリ について

vitabrevisarsl1

総合スコア57

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/01/05 12:47

編集2019/01/06 12:01

[ JavaStream.java ]

Java

1public static void main(String[] args) throws IOException{ 2 //1. X 3 Stream<String> bands = Files.lines(Paths.get( 4 "bands.txt"));//相対パス NoSuchFileException 5 /*2. O 6 Stream<String> bands = Files.lines(Paths.get( 7 "/Users/userName/eclipse-workspace/Java_study/ 8 src/Java_Gold/bands.txt"));*/ 9 bands 10 .sorted() 11 .filter(x -> x.length() > 13) 12 .forEach(System.out::println); 13 bands.close();

上記コードで、//1.のコードでは NoSuchFileException となります。
//2.のコードでは想定の結果が得られます。


このコードを記述した java ファイルと bands.txt は同じ階層にあるのに、//1.の記述でエラーになるのはなぜでしょうか?
イメージ説明

Exception in thread "main" java.nio.file.NoSuchFileException: bands2.txt at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) at java.nio.file.Files.newByteChannel(Files.java:361) at java.nio.file.Files.newByteChannel(Files.java:407) at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384) at java.nio.file.Files.newInputStream(Files.java:152) at java.nio.file.Files.newBufferedReader(Files.java:2784) at java.nio.file.Files.lines(Files.java:3744) at java.nio.file.Files.lines(Files.java:3785) at Java_Gold.JavaStreams.main(JavaStreams.java:16)

確認のため、上記コードに

Java

1String path = new File(".").getAbsoluteFile().getParent(); 2System.out.println(path);

と追記すると、/Users/userName/eclipse-workspace/Java_study と表示されるので、//1.

Java

1Stream<String> bands = Files.lines(Paths.get("/src/Java_Gold/bands.txt"));

としてみても、NoSuchFileException です。

お知恵をいただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/05 13:26

最後のは絶対パス表記ですが理解してませんよね
guest

回答1

0

ベストアンサー

Eclipseからクラスを実行した場合、カレントディレクトリはプロジェクトがあるディレクトリです。

例えば プロジェクトが /eclipse/workspace/sample_project にある場合、

java

1String path = Paths.get(".").toFile().getAbsolutePath();

実行すると、

/eclipse/workspace/sample_project/.

が返されます。

ファイルパスの先頭にスラッシュを記載するとルートディレクトリからのファイルパスを示します。

投稿2019/01/06 00:24

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vitabrevisarsl1

2019/01/07 18:44 編集

1. Stream<String> bands = Files.lines(Paths.get("src/Java_Gold/bands.txt")); として、読み取れました。 2. Eclipse の「プロジェクトがあるディレクトリ」に bands.txt を置いて、 Stream<String> bands = Files.lines(Paths.get("bands.txt")); として、読み取れました。 A-pZさんに感謝です。   (Java 8 Streams Tutorial https://www.youtube.com/watch?v=t1-YZ6bF-g0 10:04 〜 を実習していて躓いた疑問でした。) (意味のないコメントをする人がいると困るので、フォローボタンに習ってブロックボタン設置の要望をteratailにしました。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問