Java でファイルを読み取る方法: 1. [java.io] メソッドを使用して読み取り、現在のユーザー ディレクトリからの相対パスから読み取ります; 2. [java.lang.ClassLoader] を使用して読み取ります。メソッド読み取り、クラスパスを基準とした相対パスから読み取ります。
Java でファイルを読み取る方法:
Java でファイルを読み取る 2 つの方法: java.io と java .lang.ClassLoader
// java.io: File file = new File("..."); FileInputStream fis = new FileInputStream("..."); FileReader fr = new FileReader("..."); //ClassLoader: ClassLoader loader = XXXClass.class.getClassLoader(); ClassLoader loader2 = Thread.currentThread().getContextClassLoader(); URL url = loader.getResource("..."); File file = new File(url.getFile()); InputStream input = loader.getResourceAsStream("...");
1、java.io パッケージ内のクラスは常に現在のユーザー ディレクトリに基づいて相対パス名を分析します。つまり、相対パスが適切に機能するかどうかは、 user.dir の値。システム プロパティ user.dir は、JVM の起動時に設定され、通常は Java 仮想マシンの呼び出しディレクトリ、つまり java コマンドが実行されるディレクトリです。
tomcat/jboss コンテナの場合、user.dir は %home/bin%/ ディレクトリです。このディレクトリが Web コンテナを開始する場所であるためです。
Eclipse でプログラムを実行すると、Eclipse はuser.dir の値をプロジェクトのルート ディレクトリに設定します。
ユーザー ディレクトリは、System.getProperty("user.dir")を使用して表示できます。
したがって、java.io を使用して、ファイルを読み取ります。相対パスであっても絶対パスであっても、それは良い習慣ではありません。(JavaEE で) 使用できない場合は使用しないでください。
2. ClassLoader を使用する
Class.getResource() には絶対パスと相対パスの 2 つの方法があります。絶対パスは / で始まり、クラスパスまたは jar パッケージのルート ディレクトリから検索します。
相対パスは、現在のクラスが配置されているディレクトリに対する相対パスであるため、.. または . を使用して検索できます。ファイル。
ClassLoader.getResource() は絶対パスのみを使用でき、/ で始まることはできません。
リソース ファイルを読み取るこれら 2 つの方法は、user.dir や特定のデプロイメント環境に依存しません。推奨される方法です (JavaEE)
選択方法
java.io:
現在のユーザー ディレクトリを基準とした相対パスを読み取ります。ディスク ファイルの処理または純粋な Java プロジェクトでの使用に重点を置きます。
ClassLoader メソッドはより多用途ですが、JavaEE 環境でない場合、ファイルを読み取るためのクラスパス パスを見つけるのは不合理です。
java.lang.ClassLoader:
クラスパスを基準とした相対パスを読み取ります。このメソッドは JavaEE 環境で使用することをお勧めします。
通常、ClassLoader は大きすぎるファイルを読み取ることができません。Web プロジェクトの構成ファイルを読み取るのに適しています。大きなファイルを読み取る必要がある場合でも、IO パッケージを使用する必要があります。最初にClassLoader を介してファイルを絶対パスで渡し、File または他のオブジェクトに渡す場合は、io パッケージ内のオブジェクトを使用して読み取る方がよいでしょう。
Java の知識をさらに深めたい場合は、Java の基本チュートリアル を参照してください。
以上がJavaでファイルを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。