程序--------->(输出流:抽象类OutputStream<字节输出流>或抽象类Writer<字符输出流>的子类)
程序<---------(输入流:抽象类InputStream<字节输入流>或抽象类Reader<字符输入流>的子类)
Direct Known Subclasses:
File类:主要用来获取一些文件信息,不涉及对文件的读写操作
构造方法:
1. File(String filename);
2. File(String directoryPath,String filename);
3. File(File dir,String filename);
获取信息的一些方法:getName canRead canWrite exists length getAbsolutePath getParent isFile isDirectory isHidden lastModified
创建目录:public boolean mkdir() 失败或已存在返回false
若File对象是目录,可调用以下方法列出文件和子目录:
public String[] list()public File[] listFiles()
列出目录下指定类型的文件:
public String[] list(FilenameFilter obj)public File[] listFiles(FilenameFilter obj)
FilenameFilter是一个接口,该接口有一个方法:
public boolean accept(File dir,String name);
实现该接口的对象在list方法执行时会不断回调接口方法accept,该方法中的dir为调用list的当前目录File,参数name被实例化为File目录中一个文件名,当接口方法返回true时,list方法就将名字为name的文件存放到返回的数组中。
public class FileFilter implements FilenameFilter{
private String extendName;
public void setExtendName(String s){
extendName = "."+s;
}
public boolean accept(File dir, String name) {
return name.endsWith(extendName);
}
}
Tips:当使用File类创建一个对象后,并不会创建文件或者目录,还要调用:
public boolean createNewFile();
public boolean mkdir();
删除:public boolean delete();
运行可执行文件:
1. 使用Runtime类声明一个对象
2. 使用静态方法getRuntime()创建这个对象
3. 调用exec(String command)
<span style="white-space:pre"> </span>Runtime mRuntime = Runtime.getRuntime();
File file = new File("F:/Program Files/Notepad++", "notepad++.exe");
try{
mRuntime.exec(file.getAbsolutePath());
}catch(Exception e){
}
FileStream系列--
文件字节输入输出流:1.输入流:
---FileInputStream 继承自 InputStream
构造方法:FileInputStream(String name); FileInputStream(File file);参数文件是输入流的源。应catch IOException
读取字节方法: int read();int read(byte b[]); int read(byte b[],int off,int len);读出的字节存入byte数组,再用byte数组创建String对象即可
关闭流: inputStream.close();
2.输出流:
---FileOutputStream 继承自 InputStream
构造方法:FileOutputStream(String name);FileOutputStream(File file);若文件不存在则创建该文件。否则刷新文件(使其长度为0) 同样要catch IOException
FileOutputStream(String/File filename,boolean append)选择是否刷新文件
写字节:void write(int n);void write(byte b[]); void write(byte b[],int off,int len);
关闭流: FileOutputStream.close();
文件字符输入输出流:
---FileReader 、FileWriter 继承自 Reader、Writer
构造方法类似FileInputStream、FileOutputStream的
读写字符方法类似FileInputStream、FileOutputStream的
其他输入输出流子类:
缓冲流:BufferedReader、BufferedWriter 以字符输入/输出流为源/目的地,拥有更强读写能力,可以按行读取。
随机流:RandomAccessFile 既能读又能写,即既能作为流的源,又能作为流的目的地。读写更灵活,可获取或指定读取位置。
构造方法:RandomAccessFile(String/File filename,String mode);参数mode可取r或rw,流指向文件时不会刷新文件
数组流:字节数组输入/输出流 ByteArrayInputStream(byte[] buf)、ByteArrayOutputStream(byte[] buf)分别使用字节数组作为源和目的地
数据流:DataInputStream、DataOutputStream 更方便的数据读写,机器无关。构造需要底层输入/输出流作为构造参数
对象流:ObjectInputStream、ObjectOutputStream 构造需要底层输入/输出流作为构造参数,对象须实现Serializable接口。可使用该流来克隆对象