File类:
file对象既可以表示文件也可以表示目录,在程序中一个file对象可以代表一个文件或一个目录,可以利用它来对文件或者目录进行基本操作。
构造方法:
File(String pathname) | 用指定的文件路径构造文件 |
---|---|
File (String dir,string subpath) | 在指定的目录下创建指定文件名的文件 |
File (File parent,string sunpath) | 根据一个文件对象和一个字文件构造文件对象parent参数指定文件目录subpath参数书指定文件名 |
常用方法:
Boolean exists() | 测试文件是否存在 |
---|---|
String getAbsolutePath() | 返回此对象表示的绝对路径名 |
String getName() | 返回次对象的文件名称 |
String getParent() | 返回此file对象的路径名的上一级,如果文件名没有上一级,则返回null |
Boolean delete() | 删除指定对象的文件 |
Boolean createNewFile() | 创建空文件,不创建文件夹 |
Boolean isDirectory() | 测试此file对象表示的是否是文件目录 |
Boolean mkdir() | 创建一个目录,他的路径又当前file对象指定(创建一个文件夹) |
Boolean mkdirs() | 创建包括父目录的目录(创建一个文件夹,包括下面的子文件夹) |
String[] List() | 获取目录下所有文件名 |
File[] listFiles() | 获取文件目录下所有文件对象 |
File[] listFiles(filter) | 获取文件目录下所有文件对象 |
Boolean renameTo(“详细路径和文件名”) | 文件重命名 |
System.out.println(“文件是否存在”+file.canExecute());//判断文件或目录是否存在 _System._out.println(“是否为文件:”+file.isFile());//判断是否问文件 _System._out.println(“是否为目录:”+file.isDirectory());//判断是否为目录 _System._out.println(“相对路径:”+file.getPath());//返回相对路径 _System._out.println(“绝对路径:”+file.getAbsolutePath());//返回绝对路径 _System._out.println(“名称:”+file.getName());//返回文件或文件夹名称 _System._out.println(“长度:”+file.length());//返回文件长度 |
文件重命名:
File file = new File("D:\\桌面文件\\作业\\file");//指定文件夹对象
List<File> files = Arrays.asList(file.listFiles());//获取文件夹内文件
for (int i = 0; i < files.size(); i++) {
Date date = new Date();//时间对象
DateFormat df = new SimpleDateFormat("yyyyMMdd");
String path = file.getPath();//获取地址
String newname = path + "/工作日报" + (i + 1) + "-" + (df.format(date) + ".txt");//拼接新地址,文件名
if (files.get(i).isFile()) {
files.get(i).renameTo(new File(newname));///重命名
}
}
模拟移动文件:
File file=new File("D:\\桌面文件\\作业\\file\\a");//指定原文件文件夹
List<File> files = Arrays.asList(file.listFiles());//获取文件夹内文件
for (int i = 0; i < files.size(); i++) {
String path="D:\\桌面文件\\作业\\file\\b/"+files.get(i).getName();//拼接新文件地址,文件名
files.get(i).delete();//删除旧文件
System.out.println(path);
File file1=new File(path);//创键新文件对象
file1.createNewFile();//创建新文件
}
创建指定文件夹创建指定文件:
File file=new File("D:\\桌面文件\\作业\\file/abcd");//创建文件夹对象
while (true){
if (file.exists()){//判断文件是否存在
String path=file.getPath()+"/hello.txt";//拼接文件
System.out.println(path);
File file3=new File(path);//创建文件对象
file3.createNewFile();//创建新文件
System.out.println("创建成功!");
break;
}else{
file.mkdir();//创建新文件夹
}
}
Java的流:
流是指一串流动的字符,是以先进先出的方式发送和接收数据的通道
流分为输入流和输出流,
输入流:从物理文件到程序
输出流:从程序到物理文件
输入输出流又分为字节流和字符流
字节流是8位通用字节流,其基本单位是字节,字节流的基类是InputStream和OutputStream类,是抽象类
字符流是16位Unicode字符流,基本单位是Unicode字符,字符流最适合用来处理字符串和文本,字符流的基类是Reader类和Writer类,是抽象类
按流向区分:
输入流:OutputStream和Writer作为基类
输出流:InputStream和Reader作为基类
输入输出流是相对于计算机内存来说的
按处理数据单元区分:
字节流:
字节输入流:InputStream作为基类
字节输出流:OutputStream作为基类
字符流:
字符输入流Reader作为基类
字符输出流Writer作为基类
字节流是8位通用字节流,字符流是16位Unicode字符流
InputStream类:
InputStream类的常用子类有FileIputStream,用于从文件中读取数据
常用方法:
int read()(一次读取一个字节) | 从输入流中读取下一个字节数据 |
---|---|
int read(byte[] b) | 从输入流中读取数据,并将数据储存在缓冲区数组b中,并返回实际读取的字节数 |
int read(byte[] b,int off,int len) | 从输入流中读取最多长度为len长度的字节,保存到字节数组b中,保存位置从off开始 |
void close() | 关闭输入流 |
int available() | 可以从输入流中读取的字节 |
OutputStream类:
OutputStream类的常用 子类为FileOutputStream,用于向文件写数据
在OutputStream中使用”\r\n”会在文本文件中使数据换行
在new fileOutputStream是路径里面的文件夹必须存在,文件不存在系统会自己新建
在new FileOutputStream是在路径后面加上true,write添加的内容不会覆盖文件原来的内容,而是追加在文件原内容后面
OutputStream os=new FileOutputStream(file.getPath(),true);
常用方法:
void write(int c) | 将指定的字节数据写入此输出流中 |
---|---|
void write(byte[] buf) | 将数组buf中的所有字节写入此输出流中 |
void write(byte[] b,int off,int len) | 将字节数组从偏移量off开始的长度为为len的字节数据输出到输入流中 |
void close() | 关闭输出流 |
Reader类:
reader类的常用子类为BufferedReader,接收Reader对象作为参数,并对其添加字符缓冲器
常用方法:
int read() | 从输入流中读取单个字符,返回所读取到的字符数据 |
---|---|
int read(byte[] c) | 从输入流中最多读取c.length个字符,保存到字符数组c中,返回实际读取的字符数 |
int read(char[] c,int off,int len) | 从输入流中读取最对为len个字符,保存到字符数组c中,保存位置从off位置开始,返回实际读取的字符数 |
void close() | 关闭流 |
Writerl类:
Writer类的常用子类为BufferedWriter,用于将数据缓冲到字符输出流
BufferedWriter.newLine():使写入的文本换行
常用方法:
void writer(String str) | 将str字符串里包含的字符输出到指定的输出流中 |
---|---|
void writer(string str,int off,int len) | 将str字符串里从off位置开始,长度为len的多个字符输出到输出流中 |
void close() | 关闭输出流 |
void flush() | 刷新输出流 |
ObjectInputStream流:
需要将对象类实现Serializable接口,是对象可系列化