一.File 类的使用
1.file类的一个对象,代表一个文件或一个文件目录
2.file类声明在java.io包下
Public class FileTest{
/*
创建File类的实例
2.相对路径:
绝对路径:
*/
Public static void main(String[]a){
//构造器1
Filefile=newFile("hello.txt");//相对于当前的module
Filefile1=newFile("D:\\Android\\AndroidProjects\\app\\src\\main\\he.txt");
//构造器2
Filefile2=newFile("D:\\Android","AndroidProjects\\app\\src\\main\\he.txt");
//构造器3
Filefile3=newFile(file2,"hi.txt");
public static void main(String[] a){
//构造器1
File file=new File("hello.txt");//相对于当前的module
File file1=new File("D:\\Android\\AndroidProjects\\app\\src\\main\\he.txt");
System.out.println("获取绝对路径:"+file.getAbsoluteFile());
System.out.println("获取名字:"+file.getName());
System.out.println("获取路径:"+file.getPath());
System.out.println("获取父路径:"+file.getParent());
System.out.println("获取长度:"+file.length());
System.out.println("最近的修改时间:"+file.lastModified());
System.out.println("************");
System.out.println(file1.getAbsoluteFile());
System.out.println(file1.getName());
System.out.println(file1.getPath());
System.out.println(file1.getParent());
System.out.println(file1.length());
System.out.println(file1.lastModified());
File file2=new File("D:\\Android\\AndroidProjects\\app\\src\\main\\java\\com\\example");
String[] list=file2.list();
for(Strings:list){
System.out.println("获取目录下的所有文件和目录:"+s);
}
System.out.println("************************8");
File[] files=file2.listFiles();
for(File f:files){
System.out.println("获取文件的路径:"+f);
}
/*
public boolean renameTo(Filedest):把文件重命名为指定的文件路径
比如;file1.renameTo(File2)为例
要想保证返回true,需要file1在硬盘中存在的,且file2不能再硬盘中存在
1.public boolean isDriectory():判断是否文件目录
2.public boolean isFile():判断是否是文件
3.public boolean exists():判断是否存在
4.public boolean canRead():判断是否可读
5.public boolean canWrite():判断是否可写
6.public boolean isHidden():判断是否隐藏
文件的创建方法
Public boolean creatNewFile(): 创建文件。若文件存在,则不创建,返回false
Public boolean mkdir():创建文件目录。如果此文件目录存在,则不创建,如果此文件目录的上层不存在也不创建
Pulbic boolean mkdirs():创建文件目录。如果此文件目录存在,则不创建,如果此文件目录的上层不存在,创建
删除文件
Public Boolean delete():删除文件或文件夹 (java中的删除不走回收站)
*/
}
}
二.IO流
IO 流简单的解释来说,就是程序与数据之间读写的通道
抽象类 | 字节流 | 字符流 |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
1.流的分类
操作数据单位:字节流,字符流
数据的流向:输入流,输出流
流的角色:节点流, 处理流
抽象基类 | 节点流(文件流) | 缓冲流(处理流的一种) |
InputStream | FileInputStream | BufferedInputStream |
OutputStream | FileOutputStream | BufferedOutputStream |
Reader | FileReader | BufferedReader |
Writer | FileWriter | BufferedWriter |
<一>节点字符流
节点字符输入流 FileReader 无法copy 图片
结论
1.对于文本文件,txt java,c cpp使用字符流
2.对于非文本文件,jpg mp3 mp4 avi doc ppt 使用字节流
方式一:
public class FileReaderWriterTest{
public static void main(String[] a)throws IOException{
//1.实例化对象
File file=new File("D:\\Android\\AndroidProjects\\app\\src\\main\\java\\com\\example\\hello.txt");
//2.提供具体的流
FileReader fr=new FileReader(file);
//3.数据的读入
//read():返回一个读入的字符,如果达到文件的末尾,返回-1
int data=fr.read();
while(data!=-1){
System.out.print((char)data);
data=fr.read();
}
//4.关闭流
fr.close();
//异常说明,出现异常使用trycatchfinally关闭流防止资源占用
//读入的文件一定要存在,否则会报FileNotFoundException异常
}
}
方式二:
FileReader fr =null;
//1.Filel类的实例化
try{
File file = new File("hello.txt");
if(!file.exists()){
file.createNewFile();
System.out.println("获取绝对路径:"+file.getAbsoluteFile());
}
//2.FileReader流的实例化
fr = new FileReader(file);
//3.读入操作
//int len ;
char[] cbuf =new char[50];
while( fr.read(cbuf)!=-1){
for(int i=0 ;i<fr.read(cbuf);i++){
System.out.print(cbuf[i]);
}
}
}catch(IOException e){
e.printStackTrace();
}finally {
if(fr!=null) {
try {
//4.资源关闭
fr.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
<二>节点字符输出流FileWriter
输出操作,对应File可以不存在,
如果不存在,在输出过程中,会自动创建文件
如果存在,FileWriter(file,true);就添加,如果是false就覆盖原有文件
*/
public static void main(String[]a)throws IOException{
//实例化File对象
File file=new File("hello1.txt");
//提供FileWriter的对象,用于数据的写出
FileWriter fw=new FileWriter(file,true);
//写入操作
fw.write("Ihaveadream!\n");
fw.write("youneedtohaveadream\n");
//关闭流资源
fw.close();
}