- File类
1. File类
- File能新建、删除、重命名文件和目录,但不能访问文件内容本身
1.1 访问文件和目录
相关方法:
方法名 | 作用 |
---|---|
String getName() |
返回File对象所表示的文件名或路径名 |
String getPath() |
返回File对象所表示的路径名 |
String getAbsolutePath() |
返回File对象所表示的绝对路径名 |
String getParent() |
返回File对象所表示的文件父目录名 |
boolean renameTo(File newName) |
重命名此File对象所对应的文件或目录 |
boolean exists() |
是否存在 |
boolean isFile(File) |
是否是文件 |
boolean isDirectory(File) |
是否是目录 |
boolean createNewFile() |
当该文件不存在时,创建一个该File对象 |
boolean mkdir() |
创建一个File对象对应的目录 |
boolean delete() |
删除File对象所对应的文件或路径 |
public static void main(String args[]) {
File file = new File("test2.txt");
if(file.exists()){
System.out.println("File exists");
System.out.println(file.getParent());
System.out.println(file.getAbsolutePath());
}
else{
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.2 文件过滤器
File
类的list()
方法可以接受一个FilenameFilter参数,通过该参数可以只列出符合条件的文件
File currentPath = new File(".");
String[] nameList = currentPath.list(((dir, name) -> name.endsWith(".txt")));
for(String name: nameList){
System.out.println(name);
}
2. Java IO流
流的分类:
1. 输入流和输出流
- 输入流:只能从中读取数据,而不能向其写入数据
- 输出流:只能向其写入数据,而不能向其读取数据
2. 字节流和字符流
- 字节流操作的数据单元是8位的字节,而字符流操作的数据单元是16位的字符
- 字节流以
InputStream
和OutputStream
作为基类,而字符流由Reader
和Writer
作为基类
3. 节点流和处理流
- 节点流直接连接数据源,处理流通过封装后的流来实现数据读/写功能
3. 字节流和字符流
3.1 InputStream 和 Reader
InputStream
里包含如下方法:
方法名 | 作用 |
---|---|
String read() |
从输入流中读取单个字节,返回读取的字节数据 |
String read(byte[] b) |
从输入流中最多读取b.length个字节的数据,并存储在b中,返回读取的字节数 |
String read(byte[] b,int off,int len) |
从输入流中从off开始最多读取len个字节的数据,并存储在b中,返回读取的字节数 |
Reader
里包含如下方法:
方法名 | 作用 |
---|---|
String read() |
从输入流中读取单个字节,返回读取的字节数据 |
String read(char[] cbuf) |
从输入流中最多读取b.length个字节的数据,并存储在b中,返回读取的字节数 |
String read(char[] cbuf,int off,int len) |
从输入流中从off开始最多读取len个字节的数据,并存储在b中,返回读取的字节数 |
try {
FileInputStream fin = new FileInputStream("test.txt");
byte[] charset = new byte[5];
int hasRead = 0;
while((hasRead = fin.read(charset))> 0 ){
System.out.println(hasRead);
};
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
结果
3.2 outputStream 和 Writer
outputStream
/ Writer
里包含如下方法:
方法名 | 作用 |
---|---|
String write() |
从输入流中读取单个字节,返回读取的字节数据 |
String write(byte[] b / char[] cbuf) |
从输入流中最多读取b.length个字节的数据,并存储在b中,返回读取的字节数 |
String write(byte[] b / char[] cbuf,int off,int len) |
从输入流中从off开始最多读取len个字节的数据,并存储在b中,返回读取的字节数 |
4. 输入/输出流体系
Java输入输出流体系- 转换流:将字节流转换成字符流
- 推回输入流
方法名 | 作用 |
---|---|
String unread(int b) |
将一个字节/字符数组内容推回到缓冲区里,从而允许重复读取刚刚读取的内容 |
String unread(byte[] b / char[] cbuf) |
将一个字节/字符数组内容推回到缓冲区里,从而允许重复读取刚刚读取的内容 |
String unread(byte[] b / char[] cbuf,int off,int len) |
将一个字节/字符数组内容从off开始,长度为len推回到缓冲区里,从而允许重复读取刚刚读取的内容 |
注意:read
方法总是先从缓冲区中读取内容,默认的推回缓冲区的长度为1,所以需要指定缓冲区的长度
5. 重定向标准输入/输出
System.in
类和System.out
类代表标准的输入和输出,分别从键盘输入和从电脑屏幕输出
在System类里提供了如下的重定向方法
方法名 | 作用 |
---|---|
static void setErr(PrintStream err) |
重定向标准错误输出流 |
static void setIn(InputStream in) |
重定向标准输入流 |
static void setOutunread(OutputStream out) |
重定向标准输出流 |
try {
PrintStream ps = new PrintStream(new FileOutputStream("test.txt"));
System.setOut(ps);
Scanner sc = new Scanner(System.in);
System.out.println(sc.next());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
6. RandomAccessFile
- RandomAccessFile是Java输入/输出体系中功能最丰富的文件内容访问类,可以读取文件/输出数据到文件
- 支持“随机访问”的方式,跳转到文件的任意地方来读写数据
方法名 | 作用 |
---|---|
long getFilePointer |
返回当前的指针位置 |
void seek(long pos) |
将文件记录指针定位到pos位置 |
read |
和InputStream 里的一样 |
write |
和OutputStream 里的一样 |
构造器:
RandomAccessFile(String FileName, String mode)
- mode:
r
,rw
,rws
,rwd
网友评论