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

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

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

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

Q&A

解決済

2回答

2952閲覧

Filesystemクラスの利用方法

eco_richman

総合スコア6

Java

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

0グッド

0クリップ

投稿2014/09/24 12:12

FileSystemクラスはFileSystemsクラスからインスタンスを取得する所までは理解したのですが、FileSystemクラスのメソッドはabstractなので、どのようにして利用しているのでしょうか? 継承されたクラスというものがあるのでしょうか?

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

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

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

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

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

guest

回答2

0

Filesystemクラスの利用例を 3 つ紹介します。

  1. Java FileSystem .getRootDirectories http://www.java2s.com/Tutorials/Java/java.nio.file/FileSystem/Java_FileSystem_getRootDirectories_.htm より

lang

1import java.nio.file.FileSystem; 2import java.nio.file.FileSystems; 3import java.nio.file.Path; 4 5public class Main { 6 7 public static void main(String[] args) { 8 FileSystem fileSystem = FileSystems.getDefault(); 9 10 Iterable<Path> dirs = fileSystem.getRootDirectories(); 11 for (Path name : dirs) { 12 System.out.println(name); 13 } 14 } 15}
  1. Java FileSystem.getFileStores() http://www.java2s.com/Tutorials/Java/java.nio.file/FileSystem/Java_FileSystem_getFileStores_.htm より

lang

1import java.nio.file.FileSystem; 2import java.nio.file.FileSystems; 3import java.nio.file.Path; 4 5public class Main { 6 7 public static void main(String[] args) { 8 FileSystem fileSystem = FileSystems.getDefault(); 9 10 Iterable<Path> dirs = fileSystem.getRootDirectories(); 11 for (Path name : dirs) { 12 System.out.println(name); 13 } 14 } 15} 16
  1. Java 7 NIO.2 Tutorial – Writing a simple file/folder monitor using the Watch Service API http://andreinc.net/2013/12/06/java-7-nio-2-tutorial-writing-a-simple-filefolder-monitor-using-the-watch-service-api/ では、

フォルダ下の変化を監視するサービスの作成例があります。
この中で
FileSystems.getDefault().newWatchService()
というものを利用しています。

google で "java FileSystems" を検索することで、もっといろいろな利用例を見つける事ができるとおもいます。

投稿2014/09/24 14:15

katoy

総合スコア22324

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

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

eco_richman

2014/09/25 14:06

ご回答ありがとうございます。 頂いた情報で色々調べてい見たいと思います。 また、こちらに投稿させて頂くことも御座いますが、よろしくお願いいたします。
guest

0

ベストアンサー

おっしゃるとおり実際にはFileSystemを継承したクラスが存在します。そのクラスでabstractメソッドを実装しています。そのクラスの名前など具体的な詳細はユーザに公開されていませんのでドキュメントを見ても書いてありません。この例でいうとFileSystem(を実装した)クラスの名前がプラットフォーム依存なためにユーザに公開したくないのです。Javaは基本的に特定のプラットフォームに依存しないコーディングができるというのがひとつの売り文句なので「Windowsのときはこのクラス、Machintoshのときはあのクラス、Linuxのときはまた別のクラスを使ってください」なんていう仕様にしたくないのですね。こういった場合に適切なクラスのインスタンスはFileSystems.getDefault()のようなものを介して間接的に取得するようになっています。

投稿2014/09/24 13:17

KSwordOfHaste

総合スコア18394

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

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

eco_richman

2014/09/25 13:56

ご回答ありがとうございます。 自分なりに調査していました所、Systemクラスが「オブジェクトのファクトリ」とあったのでSystemクラスを基にプラットフォーム毎の実装クラスを呼び分けているという認識で宜しいでしょうか? また、FileSystemクラスで取得出来ます「PathMatcherクラス」や「FileStoreクラス」も同様に実装クラスを呼び分けているということでしょうか? よろしくお願いいたします。
KSwordOfHaste

2014/09/26 12:46

そう思って問題ないです。一般にライブラリーは「利用者が普通に期待する通りの結果が得られること」を原則として設計されているものです。もしWindows上でFileSystems.getDeafult().getPathMatcher(...)として得たPathMatcherクラスがWindows用の動作をしてくれなかったとしたら利用者はびっくりしたり憤慨したりするでしょう。ライブラリー設計者は前述の原則に基づき注意深く仕様を設計していますので、こういう病的なことは簡単には起きません。 APIドキュメントには 「getPathMatcher メソッドは、パスのマッチ操作を実行する PathMatcher の作成に使用されます。」 とだけ書かれていますが、実際の仕様をもう少し厳密に言えば 「getPathMatcher メソッドは、このFileSystemクラスがターゲットとするプラットフォーム上で適切に動作するようなパスのマッチ操作を実行する PathMatcher の作成に使用されます。」 のような仕様なのですが、前述のような基本原則から暗黙にわかることはくどくなるので一々書いてないものなのです。
KSwordOfHaste

2014/09/26 14:34

すみません。1点訂正です。FileSystemクラスじゃなくFileSystemインスタンスの間違いです。おはずかしい限りです・・・ 正:「getPathMatcher メソッドは、このFileSystemインスタンスがターゲットとするプラットフォーム上で適切に動作するようなパスのマッチ操作を実行する PathMatcher の作成に使用されます。」
eco_richman

2014/09/30 12:57

御回答ありがとうございます。 後、ここまで詳しく調べて頂きまして申し訳ございません。 またお世話になる事もあると思いますが宜しくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問