1:I/O 流
Input/Output 输入/输出流
流->具有接收数据的能力的客户端 或者产生数据的数据源
2:为什么要使用I/O 流?
计算机cpu不能直接读取硬盘,只能读内存,
而内存中的数据,不能长久存在。
而I/O 流可以把硬盘的数据读取到内存中去,
也可以把内存中的数据写入到硬盘中
3:java File 操作
常用方法:
System.out.println(file.getName());//文件名
System.out.println(file.canRead());//是否可读
System.out.println(file.canWrite());//是否可写
System.out.println(file.isHidden());//是否隐藏
System.out.println(file.length());//文件长度
System.out.println(file.isFile());//是否是文件
System.out.println(file.isDirectory());//是否是文件夹
System.out.println(file.getAbsolutePath());//得全路径
delete();//删除文件
exists()
createNewFile()创建一个文件
mkdir()创建一个文件夹
mkdirs()创建一个文件夹
.list() 获取所有文件名
.list(FilenameFilter filter); 根据文件名字名过滤文件
listFile() 获取所有文件
listFile(FileFilter filter )根据文件过滤文件
读写文件
package com.zt;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
//File file =new File("E:/培训/java/RemoteSystemsTempFiles"); 第一种方法
File file =new File("E:\\培训\\java\\ssss");//第二种方法
// File file =new File("E:"+File.separator+"培训"+File.separator+"project1"+File.separator+"CSS3电子相册");
//第三种方法 //File.separator 代表各个平台目录和子目录之间的连接符
if (file.exists()) {//如果文件存在
//System.out.println("文件存在!");
System.out.println(file.getName());//文件名
System.out.println(file.canRead());//是否可读
System.out.println(file.canWrite());//是否可写
System.out.println(file.isHidden());//是否隐藏
System.out.println(file.length());//文件长度
System.out.println(file.isFile());//是否是文件
System.out.println(file.isDirectory());//是否是文件夹
System.out.println(file.getAbsolutePath());//得全路径
file.delete();//删除文件
}else{
System.out.println("文件不存在的!");
try {
file.createNewFile();//如果不存在则创建一个文件
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
eg:输出E:\\培训\\project1文件夹下的所有子文件夹和子文件
public static void main(String[] args) {
File file =new File("E:\\培训\\project1");//第二种方法
myFilenameFilter filter=new myFilenameFilter();
if (file.exists()&&file.isDirectory()) {
String nams[]=file.list(filter);
for (String string : nams) {
System.out.println(string);
}
}
}
eg:输出E:\\培训\\project1文件夹下的所有的文件夹和文件
package com.zt;
import java.io.File;
public class ListAllFileDemo {
public static int count(File file,String path) { //定义一个计算替换后路径还有几个File.separator目录连接符
int count =0;
String absolutePath =file.getAbsolutePath();
String filePathString=absolutePath.replace(path, "");
String filePath =filePathString.replace(File.separator, "");
int length1=filePathString.length();
int length2=filePath.length();
count=length1-length2;
return count;
}
public static void showFile(File file) {
if (file.isDirectory()) {
System.out.println(file.getName());
File fs []= file.listFiles();
for (File file2 : fs) {
if (file2.isFile()) {
int count1= count(file2,"E:"+File.separator+"培训"+File.separator+"project1"+File.separator+"CSS3电子相册");
for (int i = 0; i <count1; i++) {
System.out.print("\t");
}
System.out.println(file2.getName());
}else{
int count1= count(file2,"E:"+File.separator+"培训"+File.separator+"project1"+File.separator+"CSS3电子相册");
for (int i = 0; i <count1; i++) {
System.out.print("\t");
}
showFile(file2);
}
}
}else {
//防止输入的路径不是个文件夹的情况
System.out.println(file.getName());
}
}
public static void main(String[] args) {
//File.separator 代表各个平台目录和子目录之间的连接符
File file =new File("E:"+File.separator+"培训"+File.separator+"project1"+File.separator+"CSS3电子相册");//第二种方法
showFile(file);
}
}