JAvaファイル検索器(初級)
最近、javaのファイルのいくつかの基本的な操作を学んで、ファイルの基本的な知識を利用して1つの小さいプロジェクトをしました——ファイルの検索器
このファイル検索器はデフォルトでDディスクの下で検索しますが、検索を開始すると停止できません.これはスレッドを勉強した後に改善され、タイムラインが追加されます.
ファイル、すなわちFileはjavaにあります.ioパッケージ.書類はいったい何を指しているのか、ここで先に宣言します.
1.ファイルのフルネームはファイルのパスと拡張子を含むが、私たちは単独で1つのファイル名は、パスを含まないが拡張子を含む.
2.同じディレクトリ(同じフォルダ)の下に、同じ名前のディレクトリとファイルは存在しません.強い行為をしたファイルがディレクトリの下に既存の名前に変更されると、システムはエラーを報告し、名前の変更を終了します.
3.ファイルのパスには、相対ディレクトリと絶対ディレクトリが含まれます.
相対ディレクトリ:パス区切り記号で始まるファイルパスではなく、他のパス名から取った情報を使用して解析する必要があります.デフォルトではjava.ioパッケージ内のクラスは、常に現在のユーザーのディレクトリに基づいて相対パス名を解析します.
≪絶対ディレクトリ|Absolute Directory|emdw≫:ルート・ディレクトリで始まるパスで、完全なパス名であり、他の情報を必要とせずにファイルの場所を定義できます.
≪現行ディレクトリ|Current Directory|ldap≫:プログラム実行時のディレクトリに対する相対パス
ファイルの拡張子について、私はかつて1件のとても面白い事をしたことがあって、その時異なるファイルが異なる拡張子があることを知っていますが、しかしそれだけで、私の携帯電話はmp 3フォーマットだけを支持して、しかし1つの音楽のファイルはwmaのだけあって、私は後ろの拡張子を変えて、携帯電話の中に置いて、自分はまだとても得意だと思っています.結果はやはり識別することができなくて、やっとファイルのフォーマットが決して拡張子が違うだけではないことを知っていて、今度の学習、私にファイルに対してもっと深い理解があります.
私たちがFileを使うときによく使う方法は次のとおりです.boolean exists()この抽象パス名が示すファイルまたはディレクトリが存在するかどうかをテストします. 2.String getAbsolutePath()は、この抽象パス名の絶対パス名文字列を返します. 3.String getName()は、この抽象パス名で表されるファイルまたはディレクトリの名前を返します. 4.boolean isDirectory()は、この抽象パス名が示すファイルがディレクトリであるかどうかをテストします. 5.boolean isFile()この抽象パス名が示すファイルが標準ファイルであるかどうかをテストします. 6.long length()は、この抽象パス名で表されるファイルの長さを返します. 7.static File[]listRoots()は、使用可能なファイルシステムルートをリストします.以下に、ファイル検索の具体的な実装を示します.
ファイルのインタフェースは添付ファイルを参照してください.
このファイル検索器はデフォルトでDディスクの下で検索しますが、検索を開始すると停止できません.これはスレッドを勉強した後に改善され、タイムラインが追加されます.
ファイル、すなわちFileはjavaにあります.ioパッケージ.書類はいったい何を指しているのか、ここで先に宣言します.
1.ファイルのフルネームはファイルのパスと拡張子を含むが、私たちは単独で1つのファイル名は、パスを含まないが拡張子を含む.
2.同じディレクトリ(同じフォルダ)の下に、同じ名前のディレクトリとファイルは存在しません.強い行為をしたファイルがディレクトリの下に既存の名前に変更されると、システムはエラーを報告し、名前の変更を終了します.
3.ファイルのパスには、相対ディレクトリと絶対ディレクトリが含まれます.
相対ディレクトリ:パス区切り記号で始まるファイルパスではなく、他のパス名から取った情報を使用して解析する必要があります.デフォルトではjava.ioパッケージ内のクラスは、常に現在のユーザーのディレクトリに基づいて相対パス名を解析します.
≪絶対ディレクトリ|Absolute Directory|emdw≫:ルート・ディレクトリで始まるパスで、完全なパス名であり、他の情報を必要とせずにファイルの場所を定義できます.
≪現行ディレクトリ|Current Directory|ldap≫:プログラム実行時のディレクトリに対する相対パス
ファイルの拡張子について、私はかつて1件のとても面白い事をしたことがあって、その時異なるファイルが異なる拡張子があることを知っていますが、しかしそれだけで、私の携帯電話はmp 3フォーマットだけを支持して、しかし1つの音楽のファイルはwmaのだけあって、私は後ろの拡張子を変えて、携帯電話の中に置いて、自分はまだとても得意だと思っています.結果はやはり識別することができなくて、やっとファイルのフォーマットが決して拡張子が違うだけではないことを知っていて、今度の学習、私にファイルに対してもっと深い理解があります.
私たちがFileを使うときによく使う方法は次のとおりです.boolean exists()この抽象パス名が示すファイルまたはディレクトリが存在するかどうかをテストします. 2.String getAbsolutePath()は、この抽象パス名の絶対パス名文字列を返します. 3.String getName()は、この抽象パス名で表されるファイルまたはディレクトリの名前を返します. 4.boolean isDirectory()は、この抽象パス名が示すファイルがディレクトリであるかどうかをテストします. 5.boolean isFile()この抽象パス名が示すファイルが標準ファイルであるかどうかをテストします. 6.long length()は、この抽象パス名で表されるファイルの長さを返します. 7.static File[]listRoots()は、使用可能なファイルシステムルートをリストします.以下に、ファイル検索の具体的な実装を示します.
package cn.netjava.xySearchFile;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
/**
*
*
*/
public class FileShowUI extends javax.swing.JFrame{
//
private JPanel pl;
//
private java.awt.Graphics g;
// SearchFile
private SearchFile sf;
//
private java.util.ArrayList<String> arrayList = new java.util.ArrayList<String>();
//
private String name;
//
private JTextField jtf;
/**
*
* @param args
*/
public static void main(String[] args) {
//
FileShowUI fui = new FileShowUI();
//
fui.showUI();
}
/**
*
*/
public void showUI(){
//
this.setTitle(" ");
//
this.setSize(600,500);
//
this.setLocationRelativeTo(null);
//
this.setResizable(false);
//
this.setLayout(null);
//
pl = new javax.swing.JPanel();
//
pl.setBounds(0, 0, 600, 500);
//
pl.setBackground(java.awt.Color.LIGHT_GRAY);
//
final JTextArea jta = new JTextArea(24, 48);
// 10
jtf=new JTextField(15);
//
javax.swing.JButton search = new javax.swing.JButton(" ");
javax.swing.JButton start = new javax.swing.JButton(" ");
javax.swing.JButton finish = new javax.swing.JButton(" ");
//
pl.add(search);
pl.add(jtf);
pl.add(start);
pl.add(finish);
pl.add(jta);
//
this.add(pl);
//
this.add(pl, BorderLayout.NORTH);
this.add(jta, BorderLayout.CENTER);
//
JScrollPane pane = new JScrollPane(jta);
//
pane.setSize(new Dimension(550,400));
pl.add(pane);
sf = new SearchFile(arrayList);
// “ ”
java.awt.event.ActionListener al= new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e) {
//
name = jtf.getText();
// D
int s = sf.search("D:\\",name);
if(arrayList == null && arrayList.size()==0){
jta.append(" !
");
System.out.println(" !");
}else{
for(int i=0; i < arrayList.size();i++){
jta.append(" :" + arrayList.get(i) + "
");
}
}
jta.append(" :"+ s);
System.out.println(" :"+ s);
}
};
start.addActionListener(al);
//
this.setVisible(true);
//
g = pl.getGraphics();
}
}
package cn.netjava.xySearchFile;
import java.io.File;
/**
*
* @param args
*/
public class SearchFile {
//
private java.util.ArrayList<String> arrayList = new java.util.ArrayList<String>();
//
public SearchFile(java.util.ArrayList<String> arrayList){
this.arrayList = arrayList;
}
/**
*
*/
public int search(String fileName, String name){
// 0
int count = 0;
// ,
if(name == null){
return 0;
}
//
File file = new File(fileName);
// file ,
File[] fileList = file.listFiles();
//
if(null == fileList && fileList.length == 0){
System.out.println(" , 。");
return 0;
}else{
for(int i=0; i< fileList.length; i++){
//
if(fileList[i].isFile()){
//
String filePath = fileList[i].getAbsolutePath();
// ,
if (filePath.indexOf(name) >= 0) {
count++;
arrayList.add(filePath);
}
}
//
if(fileList[i].isDirectory()){
//
String path = fileList[i].getAbsolutePath();
count += search(path,name);
}
}
}
return count;
}
}
ファイルのインタフェースは添付ファイルを参照してください.