文章目录
字节流:
字节输入流:
InputStream类
API:
方法 | 返回值 | 说明 |
---|---|---|
read() | int | 从输入流中读取下一个字节,返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,返回-1 |
read(byte[] b) | int | 从输入流中读入一定长度的字节,并以整数的形式返回字节数 |
reset() | void | 将输入指针返回到当前所做的标记处 |
mark() | void | 在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效前允许读取的字节数 |
close() | void | 关闭此输入流并释放与该流关联的所有系统资源 |
InputStream类中所有方法遇到错误时都会引发IOException异常,其中skip()、mark()、reset()等方法只对某些子类有用。
字节输出流:
OutputStream类
API:
方法 | 说明 |
---|---|
write(int b) | 将指定字节写入此输出流 |
write(byte[] b) | 将b个字节从指定的byte数组写入此输入流 |
write(byte[] b,int off,int len) | 将指定byte数组中从偏移量off开始的len个字节写入此输入流 |
flush() | 彻底完成输出并清空缓冲区 |
close() | 关闭输出流 |
OutputStream类中的所有方法均返回void,在遇到错误时会引发IOException异常
字符流:
字符输入流
Reader
Reader类中的方法与InputStream类中的方法类似
,不同的是:
方法 | 说明 |
---|---|
read(char[] c) | 从输入流中读入一定长度的字节 |
ready() | 判断是否准备读取流,返回值是boolean类型 |
字符输出流:
Writer
API:
方法 | 说明 |
---|---|
append(char c) | 将指定字符添加到此writer |
append(CharSequence c) | 将指定字符序列添加到此writer |
append(CharSequence c,int start,int end) | 将指定字符序列的子序列添加到此writer |
write(char[] c) | 写入字符数组 |
write(char[] c,int off,int len) | 写入字符数组的某一部分 |
write(int c) | 写入单个字符 |
write(String str) | 写入字符串 |
write(String str,int off,int len) | 写入字符串的某一部分 |
File类
java.io.File
创建File对象,常用:new File(String pathName)
File file = new File("d:/1.txt");
Windows下包含盘符的路径名前缀由驱动器号和一个“:”组成,文件分隔符可以是“/”,也可以是“\”(即“/”的转义字符)
操作文件
方法 | 返回值 | 说明 |
---|---|---|
canRead() | boolean | 判断文件是否可读 |
canWrite() | boolean | 判断文件是否可被写入 |
createrNewFile() | boolean | 不存在指定名称的文件时,创建一个新的文件 |
delete() | boolean | 删除指定的文件或文件夹 |
exists() | boolean | 判断文件是否存在 |
getName() | String | 获取文件或文件夹的名称 |
getParent() | String | 获取文件的父路径 |
getPath() | String | 获取文件路径名 |
length() | long | 获取文件长度(以字节为长度) |
isFile() | boolean | 判断是不是一个文件 |
isHidden() | boolean | 判读文件是否是隐藏文件 |
lastModified() | long | 获取文件最后修改时间 |
setLastModified(long time) | boolean | 设置文件或文件夹的最后一次修改时间 |
renameTo(File newname) | boolean | 重命名文件 |
setReadOnly() | boolean | 将文件或文件夹设置为只读 |
操作文件夹
API:
方法 | 返回值 | 说明 |
---|---|---|
isDirectory() | boolean | 判断是不是文件夹 |
mkdir() | boolean | 创建此抽象路径名指定的目录 |
mkdirs() | boolean | 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录 |
list() | String[] | 返回字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录 |
list(FilenameFilter filter) | String[] | 返回字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录 |
listFiles() | File[] | 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件 |
listFiles(FileFilter filter) | File[] | 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录 |
listFiles(FilenameFilter filter) | File[] | 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的的文件和目录 |
文件输入输出流
字节文件输入流FileInputStream
字节文件输出流FileOutputStream
直接上代码吧,不想写了~
实现在指定文件里写内容,读到控制台:
public class IOTest {
public static void main(String[] args) {
File file = new File("word.txt");
try {
FileOutputStream out = new FileOutputStream(file);
String content = "hello,你好!!!";
byte[] b = content.getBytes();
out.write(b);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
FileInputStream in = new FileInputStream(file);
byte[] byt = new byte[1024];
int len = in.read(byt);
System.out.println("word文件信息是:" + new String(byt, 0, len));
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
console输出:
new String处的源码记录一下:
/**
*
* @param bytes
* The bytes to be decoded into characters
*
* @param offset
* The index of the first byte to decode
*
* @param length
* The number of bytes to decode
*
* @throws IndexOutOfBoundsException
* If the {@code offset} and the {@code length} arguments index
* characters outside the bounds of the {@code bytes} array
*
* @since JDK1.1
*/
public String(byte bytes[], int offset, int length) {
checkBounds(bytes, offset, length);
this.value = StringCoding.decode(bytes, offset, length);
}
字符文件输入流FileReader
字符文件输出流FileWriter
带缓冲的输入输出流(高效流)
BufferedInputStream
BufferedOutputStream
MultipartFile
未完。。。