1.File类常用的API
**文件的概念:**相关记录或者放在一起的数据集合。它是需要存储在”长期存储“的设备上,有了它我们就可以实现持久化存储
**java.io.File类:**可以实现对文件(File)/文件夹(目录directory)
的操作。
构造方法:
1、File(String pathname)直接根据字符串类型的地址获取对应的文件对象
2、FIle(String parenr,String child)根据字符串类型的父路径和子路径获取对应的文件对象
3、FIle(File parent,String child)根据文件类型的父路径和字符串的子路径获取对应的文件对象
普通方法:
1、获取文件的字节数:long length()
2、boolean exists() 判断文件/文件夹是否存在
3、boolean isFile() 判断是否是文件
4、boolean isDirectory() 判断是否是文件夹/目录
5、String getPath() 获取此对象的相对路径 可以理解为File构造传入什么路径 就得到什么路径
6、String getAbsolutePath() 获取绝对路径 如果File构造传入的是相对路径 则可以根据它扎到对应的绝对路径,但是如果本身就是绝对路径 则直接显示
7、String getName() 获取文件或文件夹的名称
8、boolean delete() 删除文件/空文件夹
不会进入回收站【没有经过window程序操作】
9、 File [] listFiles() 获取所有的文件夹的 子目录
10、boolean createNewFIle() 创建文件
11、boolean mkdir() 创建文件夹
12、boolean mkdirs() 创建多级文件夹
public class FileDemo {
public static void main(String[] args) {
// File(String pathname) 根据一个路径得到File对象
// 把e:\a\a.txt封装成一个File对象
File file = new File(“e:\a\a.txt”);// 指向目录不一定存在
// File(String parent, String child) 根据一个目录和一个子文件/目录得到File对象
File file2 = new File("e:\\a","a.txt");
// File(File parent, String child) 根据一个父类File对象和一个子文件/目录得到File对象
File file3 = new File("E:\\a");
File file4 = new File(file3,"a.txt");
// 以上三种方式效果其实是一样的。
}
}
2、流的概念和分类
我们想实现IO的操作,就必须知道硬盘上文件的表现形式而java就提供了一个类File供我们使用
流的分类:
按照方向性分类:
输入流:读 InputStream(基类)Reader
输出流: 写 OutputStream (基类)Writer
按照处理单元:
**字节流:**可以用来传输一切内容。音频、视频、图片、文本… 根据美国ASCII码进行通信传输的
字节输出流 OutputStream 字节输入流 InputStream
**字符流:**可以用来传输文本内容 根据不同国家进行额相应文字转换(它是基于字节流产生的)
字符输出流Writer 字符输入流 Reader
基类是抽象类无法创建对象,所以需要寻找找他的子类
FileInputStream
FileOutput Stream
3.使用字节流实现文件复制
**字节输入流 ** FileInputStream
构造:
FileInputStream(File file);
FileInputStream(String pathname);
常用方法:
1.读取一个字节数据int read();
2.读取一个字节数组长度的字节数据 返回实际读取到的字节数量 : int read(byte[] b);
3.读取
**字节输出流:**FileOutput Stream
*/
public class CopyFileDemo {
public static void main(String[] args) throws IOException {
// 封装数据源
//FileInputStream fis = new FileInputStream("e:/c.txt");
FileInputStream fis = new FileInputStream("e:/a.txt");
// 封装目的地
FileOutputStream fos = new FileOutputStream("e:/b.txt");
int by = 0;
while((by = fis.read()) != -1){
fos.write(by);
}
// 释放资源
fos.close();
fis.close();
}
}
4.基本的字符流的使用
字符流的基类:
Reader
Writer
常用实现类:
FileReader
构造:
FileReader(File file);
FileReader(String pathname);
常用方法:
int read(char[] buffer);读取数据到字符数组中返回 读取的字符数
int read(char[] buffer,int offset,int len);读取指定长度的字符数据到数组中 返回读取的字符数
FileWriter
构造:
FileWriter(File file);
FileWriter(String pathname);
FileWriter(String/File pathname, boolean append);追加数据
常用方法:
void write(String str);输出一个字符串
void write(String str ,int offset,int len);输出一个字符串的一部分
void write(char[] buffer);输出一个字符数组
void write(char[] buffer,int offset,int len);输出一个字符数组的一部分
**关流方法:**void close():在try-catch中可以通过try()形式自动关流。
public class Demo1 {
public static void main(String[] args) {
try (
// 构造 BufferedReader(Reader in)
BufferedReader br = new BufferedReader(new FileReader("d:/pet.template"));
){
// 常用方法 String readLine() 读取一行字符串
// String str = br.readLine();
// System.out.println(str);
String len = null;
while((len = br.readLine()) != null) {
System.out.println(len);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class Demo2 {
public static void main(String[] args) {
try (
// 构造 BufferedWriter(Writer wr)
BufferedWriter br = new BufferedWriter(new FileWriter("e:/pet.txt"));
){
br.write("呵呵");
} catch (Exception e) {
e.printStackTrace();
}
}
}