------- android培训、java培训、期待与您交流! -----------------
1.File类概述
java.io.File类,但是不是流对象,不能读写文件
以前的流对象,构造方法中,可以传递File类型对象
File类,将路径和文件夹,进行了对象的封装,提供了很多的,操作路径和文件夹的方法
File类本身提供大量方法,操作目录和路径,但是File类需要和IO流配合到一起才能实现功能
java.io.File类,但是不是流对象,不能读写文件
以前的流对象,构造方法中,可以传递File类型对象
File类,将路径和文件夹,进行了对象的封装,提供了很多的,操作路径和文件夹的方法
File类本身提供大量方法,操作目录和路径,但是File类需要和IO流配合到一起才能实现功能
2.构造方法
2.1 File(File partent,File child)
根据父路径partent和子路径child组合成新的路径,创建一个新的File对象注意:父路径是当前路径的上一级路径,是唯一的,如果是盘符,它就没有父路径子路径是当前路径的下一级路径,可以有多个
2.2 File(String pathname)
根据给定的字符串型pathname转换成抽象路径,创建一个新的File对象
3.常用方法
3.1 boolean createNewFile()创建一个新文件,如果成功则返回true
3.2 boolean mkdir() 创建目录,创建成功则返回true,只创建一级文件夹
boolean mkdirs()创建目录,创建成功则返回true,可以创建多级文件夹
日后使用创建文件夹的方法的时候,推荐使用mkdirs()可以是单级目录,也可以是多级目录
4. File判断方法
4.1 boolean exists() 测试File构造方法中封装的路径是否存在 存在则返回true
4.2 boolean isAbsolute() 判断File构造方法中封装的路径是否是绝对路径
注意:据对路径带有盘符
4.3 boolean isDirctory() 判断File构造方法中封装的路径是不是文件夹,如果是则返回true
4.4 boolean isFile() 判断File构造方法中封装的路径是不是文件,如果是则返回true
5.File类删除方法
5.1 boolean delete() 删除File构造方法中封装的路径,不走回收站,如果删除成功返回true
如果删除的路径是一个文件夹,这个文件夹不是空的就不能删除。
5.2 void deleteOnExit()删除,File构造方法中封装的路径,延迟删除
只有在JVM要退出时,才进行尝试删除
6.File类获取方法
6.1 static File[] listRoots() 返回File类型数组,获取当前系统跟 所有的磁盘全部获取
6.2 File getAbsoluteFile() 返回File构造方法中,封装的路径的绝对路径
6.3 String getAbsolutePath() 和 getAbsoluteFile()效果一致
区别返回值:
getAbsoluteFile()返回File类型,返回值可以调用File类方法
getAbsolutePath()返回String类型,返回值可以调用String类方法
6.4 String getName() 返回名字,结果是String
获取的是包装的路径的最后那个部分的名字,最后是文件夹,获取文件夹名,如果是文件,获取文件名
但是路径有没有不管
6.5 String getParent() 获取File构造方法中,封装的路径的父路径,返回String,用的是String类方法
6.6 File getParentFile() 获取File构造方法中,封装的路径的父路径,返回File,用的是File类方法
6.7 String getPath() 将File构造方法中封装的路径,转成String类对象
7.2 boolean renameTo(File dest) 修改File构造方法中封装的路径名,重命名
要修改的文件,和修改后的文件,不在同一个路径,方法出现剪切效果
返回一个String类型数组,只有文件名,文件名获取以后使用String方法
8.2 File[] listFiles() 获取File构造方法中,封装的路径下的全部内容
返回一个File类型数组,全路径,文件名获取后使用File方法,首选方法
8.3 File[] listFile(过滤器),过滤不要的文件
FileFilter 文件过滤器,接口
自己定义一个文件过滤器,实现FileFilter接口
6.7 String getPath() 将File构造方法中封装的路径,转成String类对象
7. File类中的其他常用方法
7.1 long lastModified() 获取File构造方法 包装文件最后修改时间的毫秒值
7.2 boolean renameTo(File dest) 修改File构造方法中封装的路径名,重命名
要修改的文件,和修改后的文件,不在同一个路径,方法出现剪切效果
8. File类获取方式list开头,非静态的
8.1
String[] list() 获取File构造方法中,封装的路径下的全部内容
返回一个String类型数组,只有文件名,文件名获取以后使用String方法
8.2 File[] listFiles() 获取File构造方法中,封装的路径下的全部内容
返回一个File类型数组,全路径,文件名获取后使用File方法,首选方法
8.3 File[] listFile(过滤器),过滤不要的文件
FileFilter 文件过滤器,接口
自己定义一个文件过滤器,实现FileFilter接口
9.递归
只是一种编程技巧而已,不是Java特有
递归:就是方法的自身调用,自己调用自己
实例:
9.1计算1--100的和
9.2计算10!
9.3兔子问题
//递归计算1--100的和
public
class
RecurrenceDemo {
public
static
void
main(String[] args) {
// 计算1到100的和
System.
out
.println(method(100));
System.
out
.println(diGui(100));
/*
* 递归,解决兔子问题,斐波那契数列
*/
System.
out
.println(diGui1(12));
}
// 兔子问题
private
static
int
diGui1(
int
month) {
if
(month == 1)
return
1;
if
(month == 2)
return
1;
return
diGui1(month - 1) + diGui1(month - 2);
}
// 递归计算
private
static
int
diGui(
int
num) {
if
(num == 1)
return
1;
return
num + diGui(num - 1);
}
// 普通的for循环计算
private
static
int
method(
int
num) {
int
sum = 0;
for
(
int
i = 0; i <= num; i++) {
sum += i;
}
return
sum;
}
}
11. 复制文件夹
单级文件夹
将C:\\demo 数据源
复制到D盘 数据目的
File 字节流对象
循环,方法
实现步骤:
A. 获取到数据源的文件夹名字
B. 在数据目的的盘符中,创建一个同名字的文件夹
C. 遍历数据源,获取数据源中的所有文件
D. 获取数据源文件名,在数据目的中创建一个同名的文件
E. IO流读写文件
单级文件夹
将C:\\demo 数据源
复制到D盘 数据目的
File 字节流对象
循环,方法
实现步骤:
A. 获取到数据源的文件夹名字
B. 在数据目的的盘符中,创建一个同名字的文件夹
C. 遍历数据源,获取数据源中的所有文件
D. 获取数据源文件名,在数据目的中创建一个同名的文件
E. IO流读写文件
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.io.IOException;
/*
* 将"d:\\demo"复制到"e:\\"
* 单级目录复制
*/
public
class
CopyDemo {
public
static
void
main(String[] args) {
// 传入原文件夹的路径,和目标盘符
getAllFiles(
new
File(
"d:\\demo"
),
new
File(
"e:\\"
));
}
private
static
void
getAllFiles(File source, File target) {
// 1.定义方法,在目标盘中完成同名文件夹的创建
// 怎么获得同名文件夹的名字?
// 2.source.getName()方法获得,与目标盘符组合成目标文件夹的路径
File newTarget =
new
File(target, source.getName());
System.
out
.println(newTarget.getAbsolutePath());
newTarget.mkdirs();
// 创建目录
// 3.遍历原文件夹目录,获得所有文件的文件名
File[] sourceFiles = source.listFiles();
for
(File f : sourceFiles) {
// 获取数据源文件的文件名
// String fileName = f.getName();
// 有了数据源的文件全路径,需要的应该是数据目的全路径"e:\\demo"
// 4.数据目的的绝对路径中"e:\\demo"是有了,就差文件名了
//判断f是文件夹还是文件,如果是文件夹,就继续调用本方法继续找子文件,如果是文件直接复制文件
if
(f.isDirectory()) {
getAllFiles(f,newTarget);
}
else
{
File targetFile =
new
File(newTarget, f.getName());
// 5.有了文件名之后,用IO流赋值文件
CopyFile(f, targetFile);
}
}
}
// 定义CopyFile()方法copy文件
private
static
void
CopyFile(File source, File target) {
// 创建输入输出流对象
FileInputStream fis =
null
;
FileOutputStream fos =
null
;
try
{
fis =
new
FileInputStream(source);
fos =
new
FileOutputStream(target);
int
len = 0;
byte
[] bytes =
new
byte
[1024];
while
((len = fis.read(bytes)) != -1) {
fos.write(bytes, 0, len);
fos.flush();
}
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
try
{
if
(fos !=
null
) {
fos.close();
}
}
catch
(IOException e) {
fos =
null
;
}
finally
{
try
{
if
(fis !=
null
) {
fis.close();
}
}
catch
(IOException e) {
fis =
null
;
}
}
}
}
}
--------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com