1.文件是用来保存数据,我们写的java程序都是通过文件来保存的。文件通常保存在计算机磁盘中,所以文件是永久的,不是暂时的。当你要把数据保存在文件中时,要给文件起个名字,文件的全名字包含文件的路径名和扩展名,但我们单独讲一个文件名字时,是不带文件路径的。文件的扩展名不是文件的格式,它只是文件的后缀名,有时候只是为了我们方便查询而已。
2.有时候我们希望把同一类型的文件封装到一起,我们就引入了目录,也称文件夹,当然目录中不只是能够存真实文件,它也可有子目录,但是同一目录下不可能存在名字相同的目录或真实文件。系统中主要有3类文件,一种是目录类型的文件,第二种是真实文件,还有一种是虚拟内存文件,但我们通常只讲前面两种。
3.文件的路径:
文件的路径有两种,一种是相对路径,一种是绝对路径。相对路径是指这个文件路径引起的跟其他文件路径的关系。我举个例子:假设图片存入的位置为:D:\0903\学习\images\0.1gif中,你写的某个程序的存入位置为:D:\0903\学习\a.java中,那么,图片相对于某程序的相对路径为:images/0.1gif,那如果我把程序的存入位置改为:D:\0903\学习\java\a.java中,此时,图片相对于程序的相对路径是:/images/0.1gif.
绝对路径是指以根目录开头的路径。绝对路径很好理解,也就是文件存在哪个盘的哪个目录中,就不举例子了。
4.文件类的几种常用方法:
boolean isFile(),是用来判断File对象指向的文件是否是真实文件,如果是,就返回true,否则,返回false,
boolean createNewFile(),是用来创建一个新的真实文件的。
booLean isDirectory(),是用来判断File对象指向的文件是否是目录,如果是,返回true,否则,返回true
Boolean mkdir(),根据File对象的名字来创建一个目录。
boolean mkdirs(),如果File对象名字有多级目录,可以一次性创建。
5.当谈到文件时,我们应该要对文件进行一些操作,比如读写操作,文件的复制,判断盘中文件的个数等等。
判断盘中文件的个数:
public class FileDisplay {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String path="D:\\10";
FileDisplay fi=new FileDisplay();
int cou=fi.Count(path);
System.out.println("在该目录下找到文件的个数是:"+cou);
}
/**
* 统计文件的个数方法
* @param path
* @return
*/
public int Count(String path){
int count=0;//文件个数计数器
File file=new File(path);//创建一个file对象
File [] shuZu=file.listFiles();//将file对象里的文件或文件夹放到数组中
for(int i=0;i<shuZu.length;i++){//遍历数组
if(shuZu[i].isDirectory()){//如果是文件夹
String str=shuZu[i].getAbsolutePath();//得到该文件夹得绝对路径
count+=Count(str);
}
if(shuZu[i].isFile()){//如果是文件
count++;//使计数器加1
String str=shuZu[i].getAbsolutePath();//得到文件的绝对路径
System.out.println("文件:"+str);
}
}
return count;
}
测试结果:
文件:D:\10\test1.java
文件:D:\10\Win$1.class
文件:D:\10\Win.class
文件:D:\10\test1.class
文件:D:\10\re.java
文件:D:\10\WindowFrame.class
文件:D:\10\re.class
文件:D:\10\test.java
文件:D:\10\complex.class
文件:D:\10\test.class
文件:D:\10\Wo.java
文件:D:\10\GreedSnake.java
文件:D:\10\JFrameTest.java
文件:D:\10\jsq.java
文件:D:\10\ji.class
文件:D:\10\qqw.java
文件:D:\10\qq2.jpg
文件:D:\10\JFrameTest.class
文件:D:\10\qqw.class
文件:D:\10\Action.java
文件:D:\10\JFrame.java
文件:D:\10\qq.jpg
文件:D:\10\aQ.jpg.png
文件:D:\10\Actio.java
文件:D:\10\Actio.class
文件:D:\10\XDHO{~}Y~X5KF9WHFB)GBYL.jpg
文件:D:\10\list.cpp
文件:D:\10\b.c
文件:D:\10\b.dsp
文件:D:\10\Debug\vc60.idb
文件:D:\10\Debug\vc60.pdb
文件:D:\10\Debug\b.pch
文件:D:\10\b.ncb
文件:D:\10\b.plg
文件:D:\10\b.opt
文件:D:\10\b.dsw
文件:D:\10\hello\wo.java
文件:D:\10\Wo复制.java
在该目录下找到文件的个数是:38
如果要如果要进行文件的读写操作以及文件的复制,就必须引用输入流和输出流。输入流是指将磁盘中文件的数据读到内存中,而输出流是将内存中的数据写到磁盘中去,
文件的复制操作:
public class RWTest {
public static void main(String [] args){
String path="D:\\资料\\hello.doc";
String path1="D:\\资料\\hello复制.doc";
RWTest.WriteTest(path, path1);//调用该方法
}
public static void WriteTest(String path,String path1){
try{
java.io.FileInputStream input=new java.io.FileInputStream(path);//根据指定的路径读写文件
java.io.FileOutputStream output=new java.io.FileOutputStream(path1);//根据指定的路径写出文件
int t=input.read();//将读入的字符放到变量中去
while(t!=-1){
output.write(t);//把读入的字符写入
t=input.read();//然后再读入下个字符
}
output.flush();
output.close();//关闭流
input.close();//关闭流
}catch(Exception e){
e.getStackTrace();
}
}
}
文件的读写操作跟文件的复制操作差不多,我就不一一列举:
6.在判断文件的个数时,用到递归算法:就是当文件对象是目录时,得到该目录的路径,然后在递归,直到文件对象指的是真实文件时,才退出递归。
递归算法常用于处理一些无法穷举得计算,这些计算有一个共同点就是计算数据或对象的变化都是有规律的。递归必须给出退出递归条件,否则则是死循环,像判断文件个数操作时,退出递归的条件是,当File对象所指的文件是真实文件。
分享到:
相关推荐
下面将对Java文件操作进行详细的总结,并提供相关的示例。 1. **File类**:Java中的`File`类是所有文件和目录操作的基础。它提供了创建、删除、重命名文件和目录的方法,以及获取文件属性如大小、最后修改时间等。...
本文将对文件头和文件尾进行详细的介绍,并对常见文件类型的文件头和文件尾进行总结。 文件头(File Header)是文件的开头部分,它包含了文件的元数据,例如文件类型、版本号、作者信息等。文件头的大小和内容因...
总结来说,Java的FTPClient类为我们提供了一种强大且方便的方式来与FTP服务器交互,包括获取文件大小、文件夹属性,以及执行各种FTP命令。了解并熟练运用这些功能,可以极大地提高我们在开发过程中处理文件传输的...
从标题和描述中,我们可以了解到该文档是一份关于军用产品研制技术文件编写范例中的一个部分——研制总结。该范例文档的内容包含26页,大小为10.3MB。虽然给出的“部分内容”中充斥着大量重复的“竹叶门冬青”字样,...
总结起来,C#生成指定大小的二进制文件涉及以下步骤: 1. 引入`System.IO`命名空间。 2. 使用`FileStream`创建文件,并设置适当的文件模式。 3. 创建填充字节数组,可以是任意值或特定数据。 4. 使用`WriteByte`或`...
标题中提到的“150-PHP文件包含小总结”,表明本PDF文件是关于PHP文件包含漏洞的小结,这是针对互联网安全领域中的一种常见漏洞进行的总结和分析。在描述部分也强调了这是一个关于文件包含漏洞、getshell方法以及...
本文将详细介绍如何使用Java将一个大文件按照特定条件(如文件大小或生成日期)分割成多个小文件。 首先,我们讨论如何根据文件大小来分割文件。在Java中,我们可以使用`FileInputStream`和`FileOutputStream`类来...
### FAT文件系统总结 #### 一、硬盘组织结构 硬盘的组织结构对于理解FAT文件系统至关重要。硬盘通常被划分为多个分区,每个分区可以独立地格式化并使用不同的文件系统。在一个典型的硬盘中,可能会有3个基本分区...
### 超牛的小狼毫输入法配置文件详解 #### 一、小狼毫输入法简介 小狼毫是一款开源的中文输入法软件,适用于Windows操作系统。它支持多种输入方式,如拼音、五笔等,并且可以根据用户的习惯进行个性化设置。小狼毫...
"bmp图片文件结构总结" bmp 文件结构可以分为四个部分:bmp 文件头、位图信息头、调色板和位图数据。 bmp 文件头提供文件的格式、大小等信息。它的结构如下: * 第一个字节表示 Windows 支持的位图格式,值为 'BM...
总结来说,这款"好用的EXCEL文件合并的小程序"提供了一种高效、简便的方式来整合分散的Excel数据,它简化了数据处理流程,节省了用户的时间和精力,是Excel用户处理大量数据时的理想助手。同时,通过与不同格式的...
这篇文章主要总结了如何操作C#中的资源文件,包括读取和写入资源文件的方法。 1. **获取资源文件** 获取资源文件通常涉及加载程序集并访问其中的资源。C#中的`System.Reflection.Assembly`类提供了获取当前执行...
总结 通过以上介绍,我们可以看到,在前端利用JavaScript对文件上传进行大小和类型的限制是非常实用且必要的。不仅可以减少不必要的服务器负载,还能提高用户的交互体验。此外,结合JSP进行服务器端验证也是必不可...
当文件过大,需要分割成更小的部分以便于传输或存储时,我们可以编写一个“文件切割”工具。例如,在`SplitFile.java`中,可能有一个名为`splitFile()`的函数,它接收一个大文件路径、每个切片的大小限制和目标输出...
总结起来,"文件小工具"是一个实用的二进制文件处理工具,它涉及到了文件操作、内存管理、数据截取等核心IT概念。对于开发者和数据分析师来说,理解这些概念和技术对于处理二进制文件至关重要。在实际使用中,用户...
总结来说,"C# Webservice+微信小程序上传多个文件"这一主题涵盖了C# Web服务的开发,与微信小程序的交互,以及安全文件上传策略。通过这个项目,开发者可以学习到如何利用C#处理HTTP文件上传,理解Multipart请求...
以下是对Struts2文件上传的详细总结: 1. **表单设计**: - 在HTML表单中,需添加`<input type="file" />`字段,例如`<input type="file" name="myUpload" />`。`name`属性对应Action类中的属性。 2. **Action类*...
总结一下,这个“复制文件小程序”项目涉及了C++的文件I/O操作、异常处理、函数定义与调用,以及基本的程序流程控制。通过理解和实现这样的程序,开发者可以深入理解文件操作的底层机制,这对于任何需要处理文件系统...
在微信小程序中,实现文件下载并预览的功能是一项常见的需求,尤其在处理文档资料时。以下将详细解析这个过程,并介绍关键的API和技术点。 首先,我们从需求分析出发,需求是用户需要下载一个文件并能立即预览。在...
这个"文件读写小程序"可能是一个简单的示例程序,演示了如何在VC++中进行基本的文件操作。下面我们将深入探讨VC++中文件读写的核心概念、步骤和注意事项。 一、文件类型与打开模式 在VC++中,文件主要分为文本文件...