JAVA文件操作
1、java.io.File类
表示文件或目录,并定义了一些重要method操作文件和目录。但是一般文件的读写都通过流来操作。
重要操作:
判断是否是文件夹:
-
File.isDirectory()
判断是否是文件:
-
File.isFile()
在File类中进行目录的列表操作:
-
public String[] list()
-
public File[] listFiles()
得到文件路径:
-
public String getPath()
得到上级路径:
-
public String getParent()
创建目录
-
public bool mkdir()
2、java.io的输入/输出流
InputStream (abstract)和OutputStream (abstract)类是用于读取和写入字节流。InputStream的实现子类FileInputStream(File file)为文件的字节读取流,子类AudioInputStream为音频的读取流,PipedInputStream为管道输入流。OutputStream的实现子类FileOutputStream(File file)为文件的字节输出流,PipedOutputStream为管道输出流
InputStream的read()方法以字节为单位读入数据,OutputStream的write()方法将指定字节写入输出流。
Reader (abstract)和Writer (abstract)类用于读取和写入字符串流。Reader的子类InputStreamReader类将一个字节流转化为字符串流,通过read()方法从底层的字节流中读取一个或多个字符;FileReader类用于从文本文件中读取字符;(包装类)BufferedReader类用于从字符流中读取文本,通过readLine()方法读取字符流中的一行。对于Writer类有类似的子类实现OutputStreamWriter, FileWriter, (包装类)BufferedWriter(用于write()方法开销较大的类,多次缓冲,一次写入), (包装类)PrintWriter(提供带格式的输出println()等等)
可以这么说,真正的输入输出流是InputStream/OutputStream,Reader/Writer是针对字符转化的包装。
应用举例
-
result = new PrintWriter(new File("result.txt")); //字符文件写入流
-
segments[i] = new BufferedReader(new FileReader(i + ".txt")); //字符缓冲读入流
-
BufferedReader console = new BufferedReader(
-
new InputStreamReader(System.in)); //阻塞读字符输入流
总结的,InputStream包装为InputStreamReader, File包装为FileReader,输出控制不甚严格
目前经常用在算法测试程序中。需要注意的是,java中当前目录对应的是工程的根目录