File
File概述
File: 文件的意思(文件和文件夹),对计算机来说,文件就是指定盘符下的文件或者文件夹
即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
File常用方法
构造方法:
== public File(String pathname) pathname: 文件的路径 ==
常用的方法:
创建文件: public boolean createNewFile() 创建文件,如果文件存在,就不创建,返回false
创建文件夹: public boolean mkdir() 创建文件夹,如果文件夹存在,就不创建,返回false, 只能创建单个文件夹 mkdir (make directory)
创建多层文件夹: public boolean mkdirs() 创建文件夹,如果文件夹存在,就不创建,返回false, 可以创建多层文件夹 mkdirs
判断是否是文件: public boolean isFile()
判断是否是文件夹: public boolean isDirectory()
判断文件是否存在: public boolean exists()
获取文件的大小: public long length() 返回的是字节个数 结果/1024/1024 就是MB
获取某个文件夹下面的文件: public String[] list() 返回的是字符串数组,表示的是文件夹下面的文件或者文件夹的名称
public static void main(String[] args) throws IOException {
File file = new File("\\D:\\leidian\\火影忍者1.zip");
boolean a = file.createNewFile();
System.out.println(file);
File file1 = new File("\\D:\\leidian\\火影忍者.jpg");
boolean b1 = file1.createNewFile();
System.out.println(b1);
File file2 = new File("\\D:\\leidian\\火影忍者");
boolean mkdir1 = file2.mkdir();
System.out.println(mkdir1);
File file3 = new File("\\D:\\leidian\\火影忍者\\小七班");
boolean mkdir2 = file3.mkdirs();
System.out.println(mkdir2);
boolean b3 = file1.isFile();
boolean b4 = file3.isDirectory();
System.out.println(b3);
System.out.println(b4);
System.out.println(file1.isDirectory());
System.out.println(file1.exists());
long length = file.length();
System.out.println(length/1024/1024+"MB");
System.out.println(file.separator);
File file4 = new File("\\D:\\leidian\\火影忍者\\小七班");
String[] list = file.list();
System.out.println(Arrays.toString(list));
}
}
流
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出 。
字节输入/输出流
FileInputStream
read():读取一个字节,每次读完以后,下次就会读取下一个字节
read(byte[] b): 每次读取b.length个字节,读取到的字节存储在b数组中,数组里面放的就是读取到的数据,返回值是读取了多少个字
字符输入/输入流
字符流的底层还是字节流, 字符流是专门处理文本的
字符输入流: FileReader
字符输出流: FileWriter
{
try {
FileReader reader = new FileReader("d:\\leidian\\火影忍者.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);
}
}
文件复制
文件的拷贝: 思路就是从一个磁盘里面读取的时候,写到另外一个磁盘里面。
{
FileInputStream fis = null;
FileOutputStream fos = null;
long Start = System.currentTimeMillis();
try {
fis = new FileInputStream("\\D:\\leidian\\火影忍者.apk");
fos = new FileOutputStream("\\D:\\leidian\\火影忍者\\小七班.apk");
byte[] bytes = new byte[2048 * 2048*2];
// int len = fis.read(bytes);
// while (len!=1){
// fos.write(bytes,0,len);
// len = fis.read(bytes);
// }
int len = 0;
while ((len = fis.read(bytes)) != 1) {
fos.write(bytes, 0, len);
}
long end = System.currentTimeMillis();
System.out.println("拷贝完毕");
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (fis != null){
try{
fis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fos!= null){
try{
fos.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}