1.Class File:
文件和目录路径名的抽象表示。
pathSeparator//与系统相关路径分隔符
separator//系统相关的默认名称分隔符
(1)构造方法:
File(String pathname);//通过将给定的路径名字符串转换为抽象路径名来创建新的 File
实例。
File f = new File("D://1.txt");
File(String parent,String child)根据指定的父路径和文件路径创建一个新File对象。
File f = new File("D://A","1.txt");
File(File parent,String child);//从父抽象路径和子路径名字符串创建新的File实例。
File f = new File("D://a");
File w = new File(f,"1.txt");
(2)常用方法:
创建新文件:
creatNewFile();
File f = new File("D://1.txt");
boolean flag = f.createNewFile();
System.out.println(flag);//true原来不存在该文件创建成功,false原来存在创建失败
创建文件夹:
mkdir();
File f = new File("D://a");
boolean flag2=f.mkdir();//true创建成功,false已存在创建失败
mkdirs();
File f = new File("D://b//b");//创建多重文件夹
boolean flag2=f.mkdirs();//因不存在创建成功后返回true,否则false
删除文件:
delete();
File f = new File("D://b//c");
boolean flag2=f.mkdirs();
f.delete();//删除b文件夹里的c文件夹
判断文件是否存在:
exists();
File f = new File("D://b");
boolean flag=f.exists();//存在返回true,否则false
改变文件位置:
file.renameTo(new file)
File f = new File("D://1.txt");//f中1.txt必须存在
File p = new File("D://3.txt");//p中3.txt不能存在
boolean flag=f.renameTo(p);//改名成功返回true,否则false
获取文件路径:
getAbsolutePath():
File f = new File("D://1.txt");
System.out.println(f.getAbsoluteFile());
相对路径和绝对路径:
绝对路径:从盘符开始,是一个完整的路径,例如c://a.txt
相对路径:在java代码中是相对于项目目录路径,这是一个不完整的便捷路径,在java开发中很常
用,例如:a.txt
2.IO流
(1)概述:
可以将这种数据传输操作,看做一种数据流动,按照流动的方向分为输入Input和输出Output
Java中的IO操作主要指的是java.io包下的一些常用类的使用,通过这些类对数据进行读取和写出。
分类:
输入与输出 (按方向)
字节流与字符流(根据流动的数据类型分类)
一切皆字节:计算机中的任何数据都是以二进制的形式存储的。
在数据传输时也都是以二进制的形式存储的。
后续学习的任何流,在传输时底层都是二进制
(2)文件字节流:
(i)输出流:
Class OutputStream
close();//关闭次输出流并释放与此流关联的所有系统资源。
flush();//刷新此输出流并强制写出任何缓冲的输出字节。
write(byte[] b);//将b.length字节从指定的字节数组写入此输出流。
write(byte[] b, int off,int len);//将从偏移量off开始的指定字节数组中的leen字节写入此输出流。
write(int b);//将指定的字节写入此输出流。
子类:
Class FileOutputStream
构造方法:
FileOutputStream(File file);
FileOutputStream(File file,Boolean append);//append=true追加,不写追加清空原文件内容。
实例:
FileOutputStream f = new FileOutputStream("3.txt", true);
byte [] b =new byte[10] ;
b ="abcde".getBytes();//将字符串转为字节数组
//f.write(b);
f.write(b,1,3);//从下标为1开始写三个数据
f.flush();
f.close();
(ii)输入流
Class InputStream
close();//关闭次输出流并释放与此流关联的所有系统资源。
flush();//刷新此输出流并强制写出任何缓冲的输出字节。
read();//读取
子类:
FileInputStream
read();//读取一个字符
FileInputStream f = new FileInputStream("3.txt");//3.txt已存在
int readdata=f.read();
while(readdata!=-1){
System.out.print((char)readdata);
readdata = f.read();
}
f.close();
byte [ ] b = new byte[10];//减少io频率
int len = xx.read(b);
System.out.println(new String(b,0,len));
FileInputStream f = new FileInputStream("3.txt");
byte []b = new byte[10];
int len = 0;
do {
len = f.read(b);
System.out.println(new String(b, 0, len));
}while(len==10);
}
(3)文件字符流:
(i)输出:
FileWrite是Write的子类
构造方法:与字节流相似
FileWriter(String filename) ;
FileWriter(File filename) ;
FileWriter(String filename, boolean append) ;
FileWriter(File filename,boolean append) ;
方法:
write(int n)//向输出流写入一个字符。
write(byte b[])//向输出流写入一个字符数组。
write(byte b[],int off,int length)//从给定字符数组中起始于偏移量off处取len个字符写到输出流。
close()//关闭输出流。
FileWriter f = new FileWriter("3.txt");
char []b = {'周','杰','伦','真','有','才'};
f.write(b);
f.close();
(ii)输入:
构造方法:与字节流相似
FileReader(String filename) ;
FileReader(File filename) ;
方法:
read();//读一个字符
read(char b[]);//都一个字符数组
read(char b[], int off, int len);//都一个数组从下标off开始偏移len个字符
close();
FileReader F = new FileReader("3.txt");
char []c = new char[3];
int len = F.read(c);
while(len!=-1) {
System.out.println(c);
len = F.read(c);
}
F.close();
(4)缓冲流
BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流。二者的源和目的地必须是字符输入流和字符输出流。
构造方法:
BufferedReader(Reader in);
BufferedWriter(Writer out);
BufferedReader流能够读取文本行:
方法:readLine();
FileReader F = new FileReader("3.txt");
BufferedReader f = new BufferedReader(F);
String s = f.readLine();
do {
System.out.println(s);
s = f.readLine();
}while(s!=null);
BufferedWriter:
write(String s,int of,int len)//把字符串s写到文件中
newLine();// 向文件写入一个回行符
FileWriter F = new FileWriter("3.txt");
BufferedWriter f = new BufferedWriter(F);
f.write("周杰伦的歌好好听");
f.flush();
f.newLine();
f.write("我好喜欢他啊");
f.flush();
f.close();