Java之IO(File类)
来源:互联网 发布:域名后缀无法提交备案 编辑:程序博客网 时间:2024/05/22 11:34
- 定义:首先是一个普通类,可以直接new,字面意思就是文件,但其实是包含了对文件和文件夹的操作
常用的构造方法:
- File(String pathname) :通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
常用的方法:
- exists() :测试此抽象路径名表示的文件或目录是否存在,返回一个boolean类型的值
- getAbsoluteFile() :返回此抽象路径名的绝对路径名形式。
- getName() :返回由此抽象路径名表示的文件或目录的名称。
- getName() :返回由此抽象路径名表示的文件或目录的名称。
- getPath() :将此抽象路径名转换为一个路径名字符串。(相对路径)
- isDirectory() :测试此抽象路径名表示的文件是否是一个目录,返回一个boolean类型的值
- isFile() :测试此抽象路径名表示的文件是否是一个标准文件,返回一个boolean类型的值
- listFiles() :返回一个File类型的数组,这些路径名表示此抽象路径名表示的目录中的文件。
- mkdirs() : 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
通过上面学到的我们做一个文件搜索器,如下图:
- 步骤:
- 第一步:创建一个窗体(如上图)
- 第二步:对搜索按钮添加一个事件监听器,当点击搜索按钮的 时候,我们通过输入的路径和关键字,进行搜索,并统计出搜索出的文件个数
- 判断输入的路径是否为空
- 判断是文件还是文件夹
- 如果是文件,则将文件的个数加1,并将文件的路径通过一个集合存放起来
- 如果是文件夹,则文件夹个数加1,然后进行通过递归遍历文件夹
- 第三步:将得到的数据显示在窗体上对应的组件中
- 步骤:
代码如下:
/** 第一步,窗体 **/package com.cwt.FileSearchService;import javax.swing.JFrame;public abstract class MyFrame extends JFrame { //为了方便,我们自己写一个窗体父类 public MyFrame() { this("未命名"); } public MyFrame(String title) { this(title, 500, 400); } public MyFrame(String title, int width, int height) { setTitle(title); setSize(width, height); setLocationRelativeTo(null); setDefaultCloseOperation(3); add(); setVisible(true); } public abstract void add();}//继承上面的父类,真正实现我们的窗体package com.cwt.FileSearchService;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class Ui extends MyFrame implements ActionListener { FileSearchService fss; JLabel labelFolderNum; JLabel labelFileNum; JTextArea taPath; private JTextField tfKey; private JTextField tfPath; public Ui(String title, int width, int height) { // 设置窗体属性 super(title, width, height); } @Override public void add() { this.setLayout(new FlowLayout()); // 添加组件 JLabel labelPath = new JLabel("文件路径:"); this.add(labelPath); tfPath = new JTextField(15); this.add(tfPath); // -------------------------------------------------------------------- JLabel labelKey = new JLabel("关键字:"); this.add(labelKey); tfKey = new JTextField(5); this.add(tfKey); // ---------------------------------------------------------------------- JButton btnSearch = new JButton("搜索"); this.add(btnSearch); // 事件 btnSearch.addActionListener(this); // ---------------------------------------------------------------------- JLabel labelFolder = new JLabel("文件夹个数:"); this.add(labelFolder); // ---------------------------------------------------------------------- labelFolderNum = new JLabel(); this.add(labelFolderNum); // ---------------------------------------------------------------------- JLabel labelFile = new JLabel("文件个数:"); this.add(labelFile); // ---------------------------------------------------------------------- labelFileNum = new JLabel(); this.add(labelFileNum); // ---------------------------------------------------------------------- taPath = new JTextArea(15, 35); // ---------------------------------------------------------------------- JScrollPane spPath = new JScrollPane(taPath); this.add(spPath); } @Override public void actionPerformed(ActionEvent e) { //在这里写搜索按钮事件监听,调用我们的搜索服务类, //将我们的搜索完的数据显示在窗体中 fss = new FileSearchService(tfPath.getText(), tfKey.getText()); labelFolderNum.setText("" + fss.folderNum); labelFileNum.setText("" + fss.fileNum); for (int i = 0; i < fss.listFile.size(); i++) { taPath.append(fss.listFile.get(i) + "\n\r"); } }}/** 第二步,实现搜索按钮的监听(文件搜索的核心代码) **/package com.cwt.FileSearchService;import java.io.File;import java.util.ArrayList;public class FileSearchService { String path = null;// 路径 String key = null;// 关键字 int fileNum = 0;// 文件数 int folderNum = 0;// 文件夹数 ArrayList<String> listFile = new ArrayList<String>(); public FileSearchService(String path, String key) { this.path = path; this.key = key; fileSearch(path, key); } public void fileSearch(String path, String key) { File file = new File(path); if (file.exists()) { if (file.isDirectory()) { // 如果是文件夹 folderNum++; File[] fileList = file.listFiles();// 获取文件夹下的所有东西 for (int i = 0; i < fileList.length; i++) { // 遍历问件下所有东西,进行递归 fileSearch(fileList[i].getPath(), key); } } else {// 如果是文件,判断和关键字是否有相同部分,则保存他的路径 if (file.getName().contains(key)) { fileNum++; listFile.add(file.getAbsolutePath()); } } } }}//测试类package com.cwt.FileSearchService;public class Test { public static void main(String[] args) { new Ui("文件搜索器", 500, 400); }}
0 0
- Java之IO(File类)
- java io 之File类
- Java IO之File类
- java之Io-File类
- JAVA-IO之File类
- Java IO 之File类
- java IO之File类
- Java IO之File类
- JAVA IO 之File类
- java io 之 File
- Java IO之File
- Java IO之File
- Java IO之File
- java中的IO流之File类(一)
- Java IO操作之File类
- Java基础19-IO之File类
- java基础--IO流之File类
- Java IO之File类学习
- 新的学习方式——计算机学习规律——维持巩固发展
- Android保存图片
- 数据库安全之权限与角色
- java注解
- 查询Linux系统版本信息
- Java之IO(File类)
- CentOS开启FTP及配置用户
- 观察者模式
- tensorflow可视化tensorboard “No graph definition files were found.” 错误
- 【笔记】Struts2+Hibernate+Freemarker实现【增删改查】生成静态页面
- leetcode461
- js 根据数据反选复选框
- linux CentOS7上Redis3.2.5的安装与配置
- vsftp搭建