File类
文件和目录路径名的抽象表示形式。
即,Java中把文件或者目录(文件夹)都封装成File对象。
对计算机来说,文件就是指定盘符下的文件或文件夹
构造方法:
File 变量名=New File(Sting Pathname);
//pathname:文件路径
Windows下的路径分隔符: \ ;Linux小的路径分隔符:/
可以使用Flie.separator分隔,它会在不同系统输出相应的路径分隔符
方法:
方法 | 作用 | 返回值 |
---|---|---|
createNewFile() | 如果文件不存在就创建一个,若不存在就不创建且返回false | Boolean |
mkdir() | 创建文件夹(只能创建单层文件夹),若文件夹存在则不创建且返回false | Boolean |
mkdirs() | 创建文件夹(能创建多层文件夹),文件夹存在则不创建且返回false | Boolean |
isFile() | 判断是否是文件 | Boolean |
isDirectory() | 判断是否是文件夹 | Boolean |
exists() | 判断文件存在 | Boolean |
length() | 判断文件大小(字节) | Boolean |
list() | 获取某个文件夹下面的文件,返回字符串数组,数组内容就是文件名 | String[] |
以上方法使用时需要抛出异常
例:
public static void main(String[] args) throws IOException {
File file = new File("D:\\Mgame\\idea2023.zip");
boolean b =file.createNewFile();
System.out.println(b);
File file1 = new File("D:\\Mgame\\idea");
boolean mkdir = file1.mkdir();
System.out.println(mkdir);
File file2 = new File("D:\\Mgame\\66\\666");
boolean mkdirs = file2.mkdirs();
System.out.println(mkdirs);
System.out.println(file.isFile());
System.out.println(file1.isDirectory());
boolean mb =file.exists();
System.out.println(file.length()/1024/1024);
System.out.println(File.separator);
File file3 = new File("D:\\Mgame\\idea2023");
String[] list = file3.list();
System.out.println(Arrays.toString(list));
}
IO流
字节输出/输入流
- 字节流和字符流的基本操作是相同的,但是要想操作媒体流就需要用到字节流。
- 字节流因为操作的是字节,所以可以用来操作媒体文件。(媒体文件也是以字节存储的)
- 读写字节流:InputStream 输入流(读)和OutputStream 输出流(写)
- 字节输入流FileInputStream
- 字节输出流FileOutputStream;
- 入 出:相对于内存来说的
- 输入流:读取数据到内存(从硬盘到内存)
- 输出流:写数据到文件(从内存到硬盘)
构造方法
字节输入流FileInputStream
FileInputStream fis = new FileInputStream(要读取文件路径)
方法:
方法名 | 作用 | 返回值 |
---|---|---|
read() | 读取一个字节,每次读完以后下次就会读取下一个字节 | int |
read(字节数组) | 每次都数值.length()个字节,读出来就存入数组,数组内放的就是读取到的数据,返回值是一共读了多少个字节,如果读取完毕了返回 -1 | int |
字节输出流FileOutputStream
FileOutputStream fos = new FileOutputStream(要写入文件路径);覆盖型
FileOutputStream fos = new FileOutputStream(要写入文件路径,true);追加型
方法:
方法 | 作用 |
---|---|
write(内容) | 将内容写入到文件 |
例:
文件拷贝
public static void main(String[] args) {
FileOutputStream fos = null;
FileInputStream fis = null;
long star = System.currentTimeMillis();
try {
fos= new FileOutputStream("D:\\Mgame\\idea.zip");
fis = new FileInputStream("D:\\Mgame\\idea2023.zip");
byte[] bytes = new byte[1024 * 1024*2];
int len = fis.read();
System.out.println(len);
while (len!=-1){
fos.write(bytes,0,len);
len=fis.read(bytes);
}
long end = System.currentTimeMillis();
System.out.println(end-star);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (fos!=null){
try {
fos.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fis!=null){
try {
fis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
字符流输入\输出
1.字符流是可以直接读写字符的IO流,字符流读取字符,就要先读取到字节数据,然后转为字符.;如果要写出字符,需要把字符转为字节再写出。
2.读写字节流:Reader输入流(读)和Writer 输出流(写)
方法
字符输入:
FileReader reader=new FileReader(路径);
方法名 | 作用 | 返回值 |
---|---|---|
read() | 读取一个字节,每次读完以后下次就会读取下一个字节 | int |
read(字节数组) | 每次都数值.length()个字节,读出来就存入数组,数组内放的就是读取到的数据,返回值是一共读了多少个字节,如果读取完毕了返回 -1 | int |
字符输出:
FileWriter writer=new FileWriter(路径);覆盖
FileWriter writer=new FileWriter(路径,true);追加
方法 | 作用 |
---|---|
write(内容) | 将内容写入到文件 |
flush() | 写入之后刷新文件 |
例:
public static void main(String[] args) {
try {
FileReader reader = new FileReader("d:\\laoma.txt");
char[] chars = new char[1024];
int read = reader.read(chars);
System.out.println(read);
String s = new String(chars, 0, read);
System.out.println(s);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}