您的位置:首页 > 编程语言 > Java开发

JavaIO

2015-10-04 20:23 549 查看
程序--------->(输出流:抽象类OutputStream<字节输出流>或抽象类Writer<字符输出流>的子类)

程序<---------(输入流:抽象类InputStream<字节输入流>或抽象类Reader<字符输入流>的子类)

Direct Known Subclasses:AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream,SequenceInputStream, StringBufferInputStream

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接口。可使用该流来克隆对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: