java搜索文件
Windows下JAVA环境变量的设置祥解
Windows下JAVA用到的环境变量主要有3个,JAVA_HOME、CLASSPATH、PATH。下面逐个分析。
JAVA_HOME指向的是JDK的安装路径,如x:\JDK_1.4.2,在这路径下你应该能够找到bin、lib等目录。值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如x:\XXXXXX\xxxxx\XXXX\xxxx\XXXX\xxxx\XXXX\xxx……
那么,下面的步骤和以后的应用你都要受累了,呵呵。设置方法:
JAVA_HOME=x:\JDK_1.4.2
PATH环境变量原来Windows里面就有,你只需修改一下,使他指向JDK的bin目录,这样你在控制台下面编译、执行程序时就不需要再键入一大串路径了。设置方法是保留原来的PATH的内容,并在其中加上%JAVA_HOME%\bin
(注,如果你对DOS批处理不了解,你可能不明白%%引起来的内容是什么意思;其实这里是引用上一步设定好的环境变量JAVA_HOME,你写成x:\JDK_1.4.2也是可以的;你可以打开一个控制台窗口,输入echo
%JAVA_HOME%来看一下你的设置结果) :
PATH=%JAVA_HOME%\bin;%PATH%
同样,%PATH%是引用以前你设置的PATH环境变量,你照抄以前的值就行了。
CLASSPATH环境变量我放在最后面,是因为以后你出现的莫名其妙的怪问题80%以上都可能是由于CLASSPATH设置不对引起的,所以要加倍小心才行。
CLASSPATH=.\;%JAVA_HOME%\lib\tools.jar
首先要注意的是最前面的".\;",如果你看不清,我给你念念——句点反斜杠分号。这个是告诉JDK,搜索CLASS时先查找当前目录的CLASS文件——为什么这样搞,这是由于LINUX的安全机制引起的,LINUX用户很明白,WINDOWS用户就很难理解(因为WINDOWS默认的搜索顺序是先搜索当前目录的,再搜索系统目录的,再搜索PATH环境变量设定的)
,所以如果喜欢盘根究底的朋友不妨研究一下LINUX。
为什么CLASSPATH后面指定了tools.jar这个具体文件?不指定行不行?显然不行,行的话我还能这么罗索嘛!:)
这个是由java语言的import机制和jar机制决定的,你可以查资料解决。
呵呵,具体的设定方法: win2k\xp用户右键点击我的电脑->属性->高级->环境变量,修改下面系统变量那个框里的值就行了。
win9x用户修改autoexec.bat文件,在其末尾加入:
set JAVA_HOME=x:\JDK_1.4.2
set PATH=%JAVA_HOME%\bin;%PATH%
set CLASSPATH=.\;%JAVA_HOME%\lib\tools.jar
㈡ java如何查找指定目录下的最新文件
这个Java类的作用是查找目录文件中特定文件名的文件,并不是查找文件内容。具体代码如下:
[java] view plain
package net.xsoftlab.ke;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
//查找目录下指定文件名的文件
public class TextSearchFile {
static int countFiles = 0;// 声明统计文件个数的变量
static int countFolders = 0;// 声明统计文件夹的变量
public static File[] searchFile(File folder, final String keyWord) {// 递归查找包含关键字的文件
File[] subFolders = folder.listFiles(new FileFilter() {// 运用内部匿名类获得文件
@Override
public boolean accept(File pathname) {// 实现FileFilter类的accept方法
if (pathname.isFile())// 如果是文件
countFiles++;
else
// 如果是目录
countFolders++;
if (pathname.isDirectory()
|| (pathname.isFile() && pathname.getName().toLowerCase().contains(keyWord.toLowerCase())))// 目录或文件包含关键字
return true;
return false;
}
});
List<File> result = new ArrayList<File>();// 声明一个集合
for (int i = 0; i < subFolders.length; i++) {// 循环显示文件夹或文件
if (subFolders[i].isFile()) {// 如果是文件则将文件添加到结果列表中
result.add(subFolders[i]);
} else {// 如果是文件夹,则递归调用本方法,然后把所有的文件加到结果列表中
File[] foldResult = searchFile(subFolders[i], keyWord);
for (int j = 0; j < foldResult.length; j++) {// 循环显示文件
result.add(foldResult[j]);// 文件保存到集合中
}
}
}
File files[] = new File[result.size()];// 声明文件数组,长度为集合的长度
result.toArray(files);// 集合数组化
return files;
}
public static void main(String[] args) {// java程序的主入口处
File folder = new File("E:/");// 默认目录
String keyword = "1231";
if (!folder.exists()) {// 如果文件夹不存在
System.out.println("目录不存在:" + folder.getAbsolutePath());
return;
}
File[] result = searchFile(folder, keyword);// 调用方法获得文件数组
System.out.println("在 " + folder + " 以及所有子文件时查找对象" + keyword);
System.out.println("查找了" + countFiles + " 个文件," + countFolders + " 个文件夹,共找到 " + result.length + " 个符合条件的文件:");
for (int i = 0; i < result.length; i++) {// 循环显示文件
File file = result[i];
System.out.println(file.getAbsolutePath() + " ");// 显示文件绝对路径
}
}
}
㈢ java 快速查找100G的文件
有一个100G大小的文件里存的全是数字,而且每一个数字见用逗号隔开。如今在这一大堆数字中找出100个最大的数出来。
使用Files类将文件的所有内容读入字节数组。Files类还有一个方法可以读取所有行到字符串行表。Files类是在Java 7中引入的,如果想加载所有文件内容,使用这个类是比较适合的。
只有在处理小文件并且需要加载所有文件内容到内存中时才应使用此方法。
㈣ java 文件搜索程序
import java.io.File;
import java.io.FileFilter;
public class SearchFile {
private static final class OnlyFile implements FileFilter {
public boolean accept(File pathname) {
if (pathname.isFile()) {
return true;
} else {
return false;
}
}
}
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("使用说明:请输入java SearchFile 目录 文件名");
} else {
File file = new File(args[0]);
File[] files = file.listFiles(new OnlyFile());
for (File f : files) {
if (f.getName().contains(args[1])) {
System.out.println(f.getPath());
}
}
}
}
}
//注意路径名不能有空格
㈤ 我想编一个JAVA程序,根据给定的文件名去搜索该文件。JAVA中有什么类的方法是可以搜索文件的求指教。
操作文件用IO啊,遍历文件列表,然后把符合条件的保存下来,如果你想做强大点,比如像网络一样的话,建议你去学习下Lucene框架,那速度可不是一般的惊人啊,Oracle都无法跟他匹敌!
㈥ java的文件搜索问题
import java.io.*;
public class FindFile{
public static final String FILE_DIR = "C:\\"; //要搜索的文件夹
public static void main(String[] args){
File dir = new File(FILE_DIR);
String[] availableDataFiles = dir.list(new FilenameFilterImpl()); //得到所有符合要求的文件
for(String f : availableDataFiles) { //循环处理每个文件
File aFile = new File(FILE_DIR + f);
System.out.println(aFile.toString()); //做你要的处理,比如打印文件内容等。这里只是列出文件路径。
}
}
//这个类用来判断搜索到的文件是不是符合要求
private static class FilenameFilterImpl implements FilenameFilter {
public FilenameFilterImpl() {
}
public boolean accept(File dir, String name) {
return name.matches(".*\\.txt"); //正则表达式。只有.txt文件符合要求。
}
}
}
㈦ java如何在桌面搜索一个应用
(1)在你的控制台里面,跑到你.java文件的根目录底下,Javac xxx.java看能不能编译出.class文件,可以的话继续。
(2)在控制台输入以下命令:javac -d c:\文件夹名 xxx.java把这个包存放在c盘下。
(3)在c盘这个文件夹里面。新建一个txt文件,输入以下内容:Main-Class:包名.类名,然后回车保存。
(4)再在控制台里面输入一下命令:jar -cvfm my.jar xx.txt 类名即可。
(5)在文件夹底下就会生成一个jar的文件,点开即可,不用再在Eclipse里面跑了。
(6)要是认为生成的图标不太好看,可以在文件夹选项中添加文件类型,增加一个.jar文件,将图标选成一个你喜欢的图标即可
(7)这个是我做的第一个Java桌面应用
㈧ JAVA 搜索目录下符合条件的文件
不是因为搜索量太大,而多半是因为权限问题。具体函数是listFiles。函数说明了,如果遇到IO错误将返回null,而你的报错是处理null,所以你这里肯定是遇到了IO错误。之前能用isDirectory,不大可能是磁盘错误或者逻辑错误,就只剩下权限问题了。Win下有好些目录是没有列表权限的,原因是那些目录本身是为了兼容老版本的Win而存在的目录链接;存在的意义在于可以通过老版本Win访问文件的方式来访问新版本Win里的文件,因为是目录链接,所以文件实际在新目录里;而老版本目录不让列举文件的原因是如果允许列举,遇到像你这样的搜索,处在新目录里的文件就会被找到两次(通过旧目录链接和通过新目录直接找到)。还有回收站相关的文件和System Volume Information目录相关的也有很多默认不能打开的目录,因为这些不是普通的用户文件。
所以处理一下listFiles的结果就行了。输出不能访问的提示。至于搜索量,报错也是或者StackOverflowError,所以直接输出别先保存在数组里吧,这样也让不能访问而报错时的输出连续一点。Pattern先compile在matcher可以提高效率。
import java.io.File;
import java.util.regex.Pattern;
public class Search {
public static void search(File folder, Pattern regex) {
File[] files = folder.listFiles();
if (files == null) {
System.err.println("不能访问" + folder.getAbsolutePath());
return;
}
for(File file : files) {
if(file.isDirectory()) {
search(file, regex);
} else {
if (regex.matcher(file.getName()).matches()) {
System.out.println(file.getAbsolutePath());
}
}
}
}
public static void search(String path, String regex) {
search(new File(path), Pattern.compile(regex));
}
public static void main(String[] args) {
Search.search("C:\\Users", ".*\\.mp3");
}
}
㈨ java 查找一个TXT文件内容。
1、定义读取txt文件的目录路径
2、通过 File文件流逐行读取文件内容
--
直接通过文件流来读取txt文件的内容,但有时可能会出现乱码!此时只要设置一下文件字符编码即可
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
publicclasstxttest{
/**
*读取txt文件的内容
*@paramfile想要读取的文件对象
*@return返回文件内容
*/
publicstaticStringtxt2String(Filefile){
Stringresult="";
try{
BufferedReaderbr=newBufferedReader(newFileReader(file));//构造一个BufferedReader类来读取文件
Strings=null;
while((s=br.readLine())!=null){//使用readLine方法,一次读一行
result=result+" "+s;
}
br.close();
}catch(Exceptione){
e.printStackTrace();
}
returnresult;
}
publicstaticvoidmain(String[]args){
Filefile=newFile("D:/luceneData/test1.txt");
System.out.println(txt2String(file));
}
}
㈩ java如何实现搜索功能。比如,输入txt就能搜索出这个文件夹内所有txt格式的文件。请给完整代码。
importjava.io.*;
publicclassFileDemo{
publicstaticvoidmain(String[]args)throwsException{
//第一个参数是文件路径,第二个参数是要搜索的文件扩展名
getFile("D:\JavaDemo",".txt");
}
privatestaticvoidgetFile(StringpathName,finalStringendsWith)throwsException{
Filefile=newFile(pathName);
if(!file.exists())
thrownewRuntimeException("文件不存在,你检索个P呀。");
file.listFiles(newFileFilter(){
publicbooleanaccept(Filefile){
if(file.getName().endsWith(endsWith)){
System.out.println(file.getName());
returntrue;
}else
returnfalse;
}
});
}
}