1、File类
此类的实例可能表示(也可能不表示)实际文件系统对象,如文件或目录。
File类可以新建、删除和重命名文件和目录,但是File不能访问文件本身的内容,这要使用IO流。
File对象的createNewFile()方法在磁盘上创建真实的文件
例程:FileTest.java
import java.io.*;
public class FileTest {
public static void main(String[] args) throws IOException {
File file=new File("test1");//此相对路径即表示相对JVM的路径
File file2=new File(".");//以当前路径来创建一个File对象
File file3=new File("F:\\workplace\\IO\\jaa.txt");//系统不一定就存在jaa.txt这个文件
System.out.println("file.getName()\t"+file.getName());
System.out.println("file2.getName()\t"+file2.getName());
System.out.println("file3.getName()\t"+file3.getName());
System.out.println("file.getParent()\t"+file.getParent());
System.out.println("file2.getParent()\t"+file2.getParent());
System.out.println("file3.getParent()\t"+file3.getParent());
System.out.println("file.getAbsolutePath()\t"+file.getAbsolutePath());
System.out.println("file.getAbsoluteFile()\t"+file.getAbsoluteFile());
System.out.println("file.getAbsoluteFile().getParent()\t"+file.getAbsoluteFile().getParent());
System.out.println("file2.getAbsolutePath()\t"+file2.getAbsolutePath());
System.out.println("file3.getAbsolutePath()\t"+file3.getAbsolutePath());
File file4=new File("F://FileTest//test1.doc");
System.out.println("file4.exists()\t"+file4.exists());
//在系统中创建一个文件,注意test1.doc前面的目录一定要是真实存在的,否则执行createNewFile方法会报错
file4.createNewFile();
System.out.println("file4.exists()\t"+file4.exists());
File file5=new File("F:\\zpc");
System.out.println("file5.mkdir()"+file5.mkdir());//在系统中创建一个File对象所对应的目录
File file6=new File("F:\\workplace");
String fileList[]=file6.list();
System.out.println("=======F:\\workplace目录下的所有文件和路径如下=======");
for(String s:fileList){
System.out.println(s);
}
//File的静态方法listRoots列出所有的磁盘根路径
File[] roots=File.listRoots();
System.out.println("======系统所有根路径=======");
for(File f:roots){
System.out.println(f);
}
//在F:\\zpc目录下创建一个临时文件,并指定当JVM退出时删除该文件
File temFile=File.createTempFile("zpca", ".txt",file5);
temFile.deleteOnExit();
//通过挂起当前线程5秒,会看到临时文件被创建5秒后由于程序执行完毕,JVM退出,该文件又自动删除
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
文件过滤器:
import java.io.*;
public class FileNameFilterTest {
public static void main(String[] args) {
File file=new File("F:\\workplace\\collection\\src");
String fileList[]=file.list(new MyFilenameFilter());
for(String s:fileList){
System.out.println(s);
}
}
}
class MyFilenameFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".java")||new File(name).isDirectory();
}
}
2. io流分类
读取一个文件,输入流写出一个文件,输出流
字符流:专门用于读写文本文件的(记事本可以正常打开),字符流操作的最小数据单元是16位的字符 查询本机上的编码表(GBK)
问题?word excel是不是文本文件
常见的文本文件: .txt .java html xml sql
字节流:操作的最小单元是8位的字节,最小的存储单位1个字节
1个字节8个二进制位
任意文件
3、Java中的io继承体系
继承体系,类与类之间继承关系,子类中的共性提取成的父类
父类中定义的功能,是这个体系中的最共性的内容
学习一个继承体系的时候,找父类去看,建立子类对象
字符流:
输出流,写入文件的抽象基类(体系中的最高层的父类) Writer
输入流,读取文件的抽象基类 Reader
字节流:
输出流,写入文件的抽象基类 OutputStream
输入流,读取文件的抽象基类 InputStream
4. 字符流的输入流(读文件)