文件搜索

文件操作有很多,创建,删除等操作,这些就不说了,我就把自己练习的几个附上吧。

A列出指定目录的全部文件

Java代码 复制代码 收藏代码
  1. public class FileTest {
  2. /**
  3. * 列出给定目录的全部文件
  4. */
  5. public static void main(String[] args) {
  6. File f=new File("f:"+File.separator);
  7. String str[]=f.list();
  8. for(int i=0;i<str.length;i++){
  9. System.out.println(str[i]);
  10. }
  11. }
  12. }
public class FileTest {

	/**
	 * 列出给定目录的全部文件
	 */
	public static void main(String[] args) {
          File f=new File("f:"+File.separator);
          String str[]=f.list();
          for(int i=0;i<str.length;i++){
        	  System.out.println(str[i]);
          }
	}
}

list()方法,这个还真不是只看就成,必须练一下手,这才记得深啊。

B列出一个目录中的全部内容

Java代码 复制代码 收藏代码
  1. import java.io.File;
  2. public class FileDemo1 {
  3. /**
  4. * @param args
  5. */
  6. public static void main(String[] args) {
  7. File f=new File("e:"+File.separator);
  8. File files[]=f.listFiles();
  9. for(int i=0;i<files.length;i++){
  10. System.out.println(files[i]);
  11. }
  12. }
  13. }
import java.io.File;

public class FileDemo1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
           File f=new File("e:"+File.separator);
           File files[]=f.listFiles();
           for(int i=0;i<files.length;i++){
        	   System.out.println(files[i]);
           }
	}
}

C判断给定路径是否为目录

Java代码 复制代码 收藏代码
  1. import java.io.File;
  2. public class FileDemo2 {
  3. /**
  4. * 判定一个给定的路径是否是目录
  5. */
  6. public static void main(String[] args) {
  7. File f=new File("e:"+File.separator);
  8. if(f.isDirectory()){
  9. System.out.println(f.getPath()+"路径是目录");
  10. }else{
  11. System.out.println(f.getPath()+"路径不是目录");
  12. }
  13. }
  14. }
import java.io.File;

public class FileDemo2 {

	/**
	 * 判定一个给定的路径是否是目录
	 */
	public static void main(String[] args) {
               File f=new File("e:"+File.separator);
               if(f.isDirectory()){
            	   System.out.println(f.getPath()+"路径是目录");
               }else{
            	   System.out.println(f.getPath()+"路径不是目录");
               }
	}
}

下面是文件搜索器:

上传图片一张:在下面哈。。。

这是我做的简单的文件搜索器界面,还没有界面美化,添加了滚动条,还没有计数的框框,只是简单地把文件搜索和界面连接在一起了。

最花费时间的部分不是界面,也不是文件搜索,而是连接在一起。我当时的思路是:

第一步:搞定文件搜索

第二步:初始化界面

第三步:监听器(匿名内部类)

第四步:怎样把它们联系在一起

有几点:1.最开始的打印出路径的方法search()是在主函数中调用的,那现在想一按“查找”这个按钮,才会在下面的JTextArea区域中显示出所有的路径,所以要在监听器匿名内部类的方法中调用search()方法,代码如下:

Java代码 复制代码 收藏代码
  1. ActionListener al=new ActionListener(){
  2. public void actionPerformed(ActionEvent e) {
  3. str1=jtf.getText();
  4. str2=jtd.getText();
  5. int count= fs.search(str1, str2);
  6. if(arrayList==null&&arrayList.size()==0){
  7. jta.append("您查找的文件不存在!\n");
  8. System.out.println("您查找的文件不存在!");
  9. }else{
  10. for(int i=0;i<arrayList.size();i++){
  11. jta.append("文件"+arrayList.get(i)+"\n");
  12. }
  13. }
  14. a.append("总数为"+count);
  15. System.out.println("总数:"+count);
  16. }
  17. };
  ActionListener al=new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				 str1=jtf.getText();
				 str2=jtd.getText();
				int count= fs.search(str1, str2);
				 if(arrayList==null&&arrayList.size()==0){
					 jta.append("您查找的文件不存在!\n");
					 System.out.println("您查找的文件不存在!");
				 }else{
					 for(int i=0;i<arrayList.size();i++){
						 jta.append("文件"+arrayList.get(i)+"\n");
					 }
				 }
jta.append("总数为"+count);
       System.out.println("总数:"+count);
			}
        };        

2文件搜索单独定义一个类:

Java代码 复制代码 收藏代码
  1. public class FileSearch {
  2. //定义一个arrayList对象
  3. private ArrayList<String> arrayList=new ArrayList<String>();
  4. private String str2;
  5. private String str1;
  6. //构造函数传参数
  7. public FileSearch(ArrayList<String> arrayList,String str2,String str1){
  8. this.arrayList=arrayList;
  9. this.str1=str1;
  10. this.str2=str2;
  11. }
  12. public int search(String str1,String str2){
  13. int count=0;
  14. File fl=new File(str1);
  15. File [] file=fl.listFiles();//列出目录
  16. if(null==file||file.length==0){
  17. return 0;
  18. }
  19. for(int i=0;i<file.length;i++){
  20. if(file[i].isDirectory()){
  21. String filemingzi=file[i].getAbsolutePath();
  22. count+=search(filemingzi,str2);
  23. }
  24. if(file[i].isFile()){
  25. String subDir=file[i].getAbsolutePath();
  26. //如果文件与查找的文件名相同,就把路径添加到队列中
public class FileSearch {
	//定义一个arrayList对象
    private ArrayList<String> arrayList=new ArrayList<String>();
      private String str2;
	private String str1;
       //构造函数传参数
	public  FileSearch(ArrayList<String> arrayList,String str2,String str1){
		this.arrayList=arrayList;
		this.str1=str1;
		this.str2=str2;
}
	public int search(String str1,String str2){
	 
		  int count=0;
		  File fl=new File(str1);
		  File [] file=fl.listFiles();//列出目录
		  if(null==file||file.length==0){
			  return 0;
		  }
		  for(int i=0;i<file.length;i++){
			  if(file[i].isDirectory()){
				  
				  String filemingzi=file[i].getAbsolutePath();
 count+=search(filemingzi,str2);
			  }
			  if(file[i].isFile()){
				  
				  String subDir=file[i].getAbsolutePath();
                                                //如果文件与查找的文件名相同,就把路径添加到队列中
Java代码 复制代码 收藏代码
  1. if(subDir.indexOf(str2)>=0){
  2. count++;
  3. arrayList.add(subDir);
  4. }
  5. // System.out.println("文件:"+subDir);
  6. // jta.append(file[i].toString()+"\r\n");
  7. }
  8. }
  9. return count;
  10. }
  11. }
				  if(subDir.indexOf(str2)>=0){
					  count++;
					  arrayList.add(subDir);
				  }
//				  System.out.println("文件:"+subDir);
//				  jta.append(file[i].toString()+"\r\n");
				   }
			  
			  }
		return count;
		}
	}

在这里用了List接口中最常用的ArrayList数组集合,我觉得当时很傻的,想用队列去存储所有的路径,又要增加一个类。并且,上几节课刚学完集合框架,当时还想学这个干嘛,不知道什么时候用的说,结果这果真就联系上了,非常好用。

3JTextArea,嘿,我不会告诉你,我不知道JTextArea有append()方法,当时还用了JOptionPane.showMessageDialog(),结果每一条信息弹出一个对话框,电脑差点崩溃了。。。
4初始化界面:

Java代码 复制代码 收藏代码
  1. public class FileCarry extends JFrame{
  2. static String str1;
  3. String str2;
  4. JTextField jtf;
  5. JTextField jtd;
  6. static JTextArea jta;
  7. FileSearch fs;
  8. //File [] file;
  9. String array[];
  10. private int i;
  11. private ArrayList<String> arrayList=new ArrayList<String>();
  12. // FileSearch fs;
  13. /**
  14. * @param args
  15. */
  16. public static void main(String[] args) {
  17. FileCarry fc=new FileCarry();
  18. fc.init();
  19. }
  20. private void init() {
  21. this.setDefaultCloseOperation(3);
  22. this.setSize(new Dimension(1000,600));
  23. this.setTitle("文件搜索器");
  24. this.setLocationRelativeTo(null);
  25. this.setLayout(new FlowLayout());
  26. javax.swing.JLabel lblName=new javax.swing.JLabel("要查找的文件所在的盘符:");
  27. //添加到窗体上
  28. this.add(lblName);
  29. jtf=new JTextField(20);
  30. this.add(jtf);
  31. JLabel lbl=new JLabel("该盘下要查找的文件");
  32. this.add(lbl);
  33. jtd=new JTextField(20);
  34. this.add(jtd);
  35. //显示目录的窗口
  36. JButton jb=new JButton("查找");
  37. this.add(jb);
  38. jta=new JTextArea(30,50);
  39. this.add(jta);
  40. JScrollPane pane=new JScrollPane(jta);
  41. this.add(pane);
  42. fs=new FileSearch(arrayList,str2,str1);
  43. ActionListener al=new ActionListener(){
  44. public void actionPerformed(ActionEvent e) {
  45. str1=jtf.getText();
  46. str2=jtd.getText();
  47. int count= fs.search(str1, str2);
  48. if(arrayList==null&&arrayList.size()==0){
  49. jta.append("您查找的文件不存在!\n");
  50. System.out.println("您查找的文件不存在!");
  51. }else{
  52. for(int i=0;i<arrayList.size();i++){
  53. jta.append("文件"+arrayList.get(i)+"\n");
  54. }
  55. }
  56. jta.append("总数为"+count);
  57. System.out.println("总数:"+count);
  58. }
  59. };
  60. jb.addActionListener(al);
  61. this.setVisible(true);
  62. }
  63. // private int printCount(String str1) {
  64. // int count=0;
  65. // File fl=new File(str1);
  66. // File [] file=fl.listFiles();//列出目录
  67. // if(null==file||file.length==0){
  68. // return 0;
  69. // }
  70. // for(i=0;i<file.length;i++){
  71. // if(file[i].isDirectory()){
  72. // String filemingzi=file[i].getAbsolutePath();
  73. // // String fileming=file[i].getAbsolutePath();
  74. // System.out.println("目录:"+filemingzi);
  75. //
  76. // jta.append(file[i].toString()+"\r\n");
  77. // count+=printCount(filemingzi);
  78. // }
  79. // if(file[i].isFile()){
  80. // count++;
  81. // String subDir=file[i].getAbsolutePath();
  82. // System.out.println("文件:"+subDir);
  83. // jta.append(file[i].toString()+"\r\n");
  84. //
  85. // }
  86. }
public class FileCarry extends JFrame{
static String str1;
String str2;
JTextField   jtf;
JTextField jtd;
static JTextArea jta;
FileSearch fs;
//File [] file;
String array[];
private int i;
private ArrayList<String> arrayList=new ArrayList<String>();
// FileSearch fs;
	/** 
                 * @param args
	 */
	public static void main(String[] args) {
		   
          FileCarry fc=new FileCarry();
          fc.init();
	}

	private void init() {
		this.setDefaultCloseOperation(3);	
        this.setSize(new Dimension(1000,600));
        this.setTitle("文件搜索器");
        this.setLocationRelativeTo(null);
        this.setLayout(new FlowLayout());
        javax.swing.JLabel lblName=new javax.swing.JLabel("要查找的文件所在的盘符:");
	    //添加到窗体上
	     this.add(lblName);
	     jtf=new JTextField(20);
	     this.add(jtf);
	     JLabel lbl=new JLabel("该盘下要查找的文件");
	     this.add(lbl);
	     jtd=new JTextField(20);
	     this.add(jtd);
//显示目录的窗口
	    JButton jb=new JButton("查找");
	     this.add(jb);
	     jta=new JTextArea(30,50);
	     this.add(jta);
	     JScrollPane pane=new JScrollPane(jta);
	     this.add(pane);	     
	      fs=new FileSearch(arrayList,str2,str1); 
        ActionListener al=new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				 str1=jtf.getText();
				 str2=jtd.getText();
				int count= fs.search(str1, str2);
				 if(arrayList==null&&arrayList.size()==0){
					 jta.append("您查找的文件不存在!\n");
 System.out.println("您查找的文件不存在!");
				 }else{
					 for(int i=0;i<arrayList.size();i++){
						 jta.append("文件"+arrayList.get(i)+"\n");
					 }
				 }
  jta.append("总数为"+count);
       System.out.println("总数:"+count);
			}
        };       
        jb.addActionListener(al);
        this.setVisible(true);
	}
//	private int printCount(String str1) {
//		  int count=0;
//		  File fl=new File(str1);
//		  File [] file=fl.listFiles();//列出目录
//		  if(null==file||file.length==0){
//			  return 0;
//		  }
//		  for(i=0;i<file.length;i++){
//			  if(file[i].isDirectory()){
//				  String filemingzi=file[i].getAbsolutePath();
//				//  String fileming=file[i].getAbsolutePath();
//				  System.out.println("目录:"+filemingzi);
//				  
//				  jta.append(file[i].toString()+"\r\n");
//				  count+=printCount(filemingzi);
//			  }
//			  if(file[i].isFile()){
//				  count++;
//				  String subDir=file[i].getAbsolutePath();
//				  System.out.println("文件:"+subDir);
//				  jta.append(file[i].toString()+"\r\n");
//				  
//			  }
}

后面的那个注释掉的printcount方法,是指定目录搜该目录下所有文件的方法,其实和search()方法就有一点差别,不舍得删就放上去了。。。这个还是简易的,我还会再做修改。。。

额。。。自己刚刚重新看了一遍,发现我这注释真不是一般的少啊。。。不好的习惯啊,我一定会改!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值