输入输出流
在java中如果我们想要实现文件的查找,需要用到File类,实现文件的复制操作就需要用到输入输出流了,其中:所有的输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有的输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类,下面我们先来认识一下File类。
File类:
File类的对象通常用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件的读写权限等,但是,不涉及文件的读写操作。
首先,file的构造方法有4个 | File(File parent, String child) | | 根据 parent 抽象路径名和child 路径名字符串创建一个新 File 实例。 |
| File(String pathname) | | 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
| File(String parent, String child) | | 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
| File(URI uri) | | 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 |
我们可以根据不同的需求来用它的构造方法。下面是一个小小的文件搜索器的根据路径和关键字查找文件夹和文件的方法实现:
//按路径搜索文件的方法
public int printDir(String name){
//int count1=0;
//将文件名封装成文件对象
File dir=new File(name);
//列表目录
File[] files=dir.listFiles();
if(files!=null&&files.length!=0){//当不是空目录或文件
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){//如果是目录
//得到绝对路径
String path=files[i].getAbsolutePath();
printDir(path);
}
else if(files[i].isFile()){
String path1=files[i].getAbsolutePath();
area.append(path1+"\n");
count1++;
}
}
}
return count1;
}
//按路径搜索文件夹的方法
public int printDirs(String name){
// /int count2=0;
//将文件名封装成一个文件对象
File dirs=new File(name);
//列表目录
File[] files=dirs.listFiles();
if(files.length!=0&&files!=null){
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
count2++;
//得到目录的绝对路径
String path=files[i].getAbsolutePath();
area.append(path+"\n");
}
}
}
return count2;
}
//按关键字搜文件的方法
public int key(String name,String keys){
//此处的name会默认设为E盘
String knum=keys;
//将文件名封装成一个文件对象
File dir=new File(name);
File[] files=dir.listFiles();
if(files!=null&&files.length!=0){
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
//得到文件夹的绝对路径
String path=files[i].getAbsolutePath();
//递归调用文件的方法
key(path,knum);
}
else if(files[i].isFile()){//如果是文件,则判断文件名中是否包含关键字
//得到文件的名字
String names=files[i].getName();
if(names.contains(keys)){//如果文件名中包含关键字
//得到文件的绝对路径
String paths=files[i].getAbsolutePath();
area.append(paths+"\n");
count3++;
}
}
}
}
return count3;
}
FileInputStream类和FileOutputStream类:
如果我们对文件的读取要求很简单的话,可以用 FileInputStream类,该类的实例方法是从inputstream类中继承来的。我们就从复制一个小文件来分析这两个类。
要复制一个文件,我们要做的就是获得文件路径----->将文件内容取出------->将取出的文件写入指定的路径中
这里有两个动作:读出文件和写入文件
读文件我们可以用到FileInputStream类中的read方法,它又分几种读入形式,例如read();是不带参数的,read(byte[]);是带有一个字节数组参数的方法,另外的我们可以在jdk中找到.
写文件就可以用到FileOutputStream类中的write(byte[]);方法,和read一样,它也有几种带参数的形式。 | write(byte[] b) | | 将 b.length 个字节从指定 byte 数组写入此文件输出流中。 |
| write(byte[] b, int off, int len) | | 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。 |
| write(int b) | | 将指定字节写入此文件输出流 |
下面是一个复制文件的例子:
package fileCopy;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 复制文件的类
* @author xiu
*
*/
public class CopyFile {
/**
* 程序入口
* @param args
*/
public static void main(String[] args){
CopyFile copyf=new CopyFile();
//文件开始复制时记下当前的时间
long time=System.currentTimeMillis();
//给定一个要复制的文件路径
String path="C:\\Users\\xiu\\Desktop\\aa.txt";
// String path="E:\\workspace\\java\\PlantsFight\\showRole.class";
//给定一个复制目的地的文件路径
String path1="C:\\Users\\xiu\\Desktop\\bb.txt";
//调用复制文件的方法
copyf.copyFile(path,path1);
//记下当前时间
long time1=System.currentTimeMillis();
//输出文件复制所花的总时间
System.out.println("复制一共耗时"+(time1-time)+"毫秒");
}
/**
* 写一个复制文件的方法
*/
public void copyFile(String path,String path1){
try {
//System.out.println(path);
InputStream file=new FileInputStream(path);
OutputStream file1=new FileOutputStream(path1);
//定义一个数组,用来存放读出的数据
byte arr[]=new byte[file.available()];
//读出arr数组中的数据
while(file.read(arr)!=-1){
//将读出的数据写入到文件中
file1.write(arr);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
在操作系统领域,模拟文件系统是一项重要的实践任务,它旨在帮助我们理解文件系统的工作原理和操作方式。通过模拟文件系统,我们可以实现对文件的基本操作,包括创建、删除和修改等核心功能。下面将详细阐述这些知识...
在VB (Visual Basic)编程语言中,文件操作是常见的任务,包括读取、写入、复制和搜索文件等。以下是一些VB文件操作的关键知识点: 1. **文件打开模式**: - `Open` 语句用于打开文件,可以设置不同的打开模式。如...
学习小结中,提到了新建文件夹、文件选定、文件复制移动及重命名这四个关键操作。新建文件夹是组织文件的基础,文件选定涉及单个、连续和不连续的文件,复制和移动文件是文件管理的核心,而重命名文件则是对文件信息...
课堂小结中强调了几个关键点:操作前先选择目标,先定位目标再进行操作;查找文件时还可以按大小或修改日期;彻底删除需谨慎;并熟悉常用快捷键,如Ctrl+A全选,Ctrl+C复制,Ctrl+V粘贴,Ctrl+X剪切,这将极大地提高...
《大学计算机信息技术教程》是一本全面涵盖计算机基础知识和操作技能的教材,主要针对大学计算机课程中的各类操作题进行了总结。本教程分为三个主要部分:文字录入、文件与文件夹操作,以及Office常用软件的使用。 ...
课堂小结强调了文件管理的重要性,指出熟练进行文件和文件夹管理操作对于后续学习计算机应用至关重要。资源管理器作为主要工具,提供了查看、操作和管理文件系统的一站式解决方案,使用户能够高效地利用计算机资源。...
3. **解析请求**:Struts2 过滤器根据 `struts.xml` 配置文件查找匹配的命名空间 (`namespace`) 和动作 (`action`)。 4. **处理请求**:根据配置文件中指定的类执行相应的业务逻辑。 5. **返回结果**:执行完毕后,...
#### 小结 通过上述方法,我们可以有效地避开百度文库的下载限制,无需支付费用或下载任何额外软件,就能快速获取所需的文档内容。这种方法不仅适用于学术研究,对于日常工作中需要大量阅读和整理资料的人员也非常...
例如,`ls`用于列出目录内容,`touch`用于创建新文件或更新文件时间戳,`cp`和`mv`分别用于复制和移动文件或目录,而`rm`用于删除文件或目录。此外,`cat`、`tac`、`more`、`less`可查看文件内容,`ln`创建软链接或...
xcopy 要复制的文件或目录树 目标地址目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件 用参数/e才可连目录下的子目录一起复制到目标地址下。 tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec...
在Windows XP操作系统中,有很多实用的技巧和方法可以提高用户的工作效率,优化系统性能,以及解决常见问题...在提供的“WinXP技巧小结.pdf”文件中,应该会有更详细和全面的介绍,建议详细阅读,以了解更多实用技巧。
5. 小结:总结本节课的学习,讨论文件管理和查找方法 知识点 1. 文件类型:文本文件、图像文件、音频文件、视频文件等 2. 搜索文件方法:使用搜索工具、文件夹管理、文件类型排序等 3. 图像文件格式:BMP、JPG、...
Linux是一种类Unix操作...通过这些常用Linux命令的小结,用户可以在处理系统管理、文件处理和文本处理等任务时更加高效。正确的使用这些命令可以极大地提升工作效率,并能帮助用户在复杂的任务中迅速定位和解决问题。
在文件和文件夹的操作部分,学生需要熟悉基本的文件管理操作,如创建、重命名、移动、复制和删除文件,以及创建和管理文件夹。这还包括理解不同类型的文件扩展名,例如.exe代表可执行程序,.txt表示文本文件,.doc或...
在没有具体文件内容的情况下,无法提供特定于“天河CAD快捷键小结.pdf”文件的详细快捷键信息。用户如果需要查找具体快捷键,可以查阅天河CAD的帮助文档或官方网站,通常这些资源会提供详尽的快捷键列表和使用方法。
窗口是用户与电脑交互的主要界面,用户通过窗口可以看到和操作各种程序。菜单则是一种可视化展示计算机命令的形式,通常采用下拉式设计,用户可以通过键盘和鼠标选择菜单项,执行相应的命令。 此外,资料还提到了...
《EXCEL小结》PPT课件包含了Excel电子表格处理软件的多个核心知识点,以下是详细的说明: 1. **Excel基础知识和基本操作**:在Excel中,首先要掌握如何启动和退出程序,了解Excel的工作界面,包括菜单栏、工具栏、...
- **find**:强大的文件查找工具,可以根据多种条件进行查找。 #### 四、文件存储结构与链接 **4.1 文件存储结构** Linux 文件系统通常采用层次结构,每个文件和目录都有其特定的位置。文件系统的设计使得用户...