File类:

file对象既可以表示文件也可以表示目录,在程序中一个file对象可以代表一个文件或一个目录,可以利用它来对文件或者目录进行基本操作。

构造方法:

File(String pathname) 用指定的文件路径构造文件
File (String dir,string subpath) 在指定的目录下创建指定文件名的文件
File (File parent,string sunpath) 根据一个文件对象和一个字文件构造文件对象parent参数指定文件目录subpath参数书指定文件名

常用方法:

image.png

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());//返回文件长度

文件重命名:

  1. File file = new File("D:\\桌面文件\\作业\\file");//指定文件夹对象
  2. List<File> files = Arrays.asList(file.listFiles());//获取文件夹内文件
  3. for (int i = 0; i < files.size(); i++) {
  4. Date date = new Date();//时间对象
  5. DateFormat df = new SimpleDateFormat("yyyyMMdd");
  6. String path = file.getPath();//获取地址
  7. String newname = path + "/工作日报" + (i + 1) + "-" + (df.format(date) + ".txt");//拼接新地址,文件名
  8. if (files.get(i).isFile()) {
  9. files.get(i).renameTo(new File(newname));///重命名
  10. }
  11. }

模拟移动文件:

  1. File file=new File("D:\\桌面文件\\作业\\file\\a");//指定原文件文件夹
  2. List<File> files = Arrays.asList(file.listFiles());//获取文件夹内文件
  3. for (int i = 0; i < files.size(); i++) {
  4. String path="D:\\桌面文件\\作业\\file\\b/"+files.get(i).getName();//拼接新文件地址,文件名
  5. files.get(i).delete();//删除旧文件
  6. System.out.println(path);
  7. File file1=new File(path);//创键新文件对象
  8. file1.createNewFile();//创建新文件
  9. }

创建指定文件夹创建指定文件:

  1. File file=new File("D:\\桌面文件\\作业\\file/abcd");//创建文件夹对象
  2. while (true){
  3. if (file.exists()){//判断文件是否存在
  4. String path=file.getPath()+"/hello.txt";//拼接文件
  5. System.out.println(path);
  6. File file3=new File(path);//创建文件对象
  7. file3.createNewFile();//创建新文件
  8. System.out.println("创建成功!");
  9. break;
  10. }else{
  11. file.mkdir();//创建新文件夹
  12. }
  13. }

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添加的内容不会覆盖文件原来的内容,而是追加在文件原内容后面

  1. 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接口,是对象可系列化

第三章:I/O和反射机制 - 图2