api截图:
--------------------------------------------------------------------------
演示:
package day09;
import java.io.File;
import java.io.IOException;
public class Test07 {
public static void main(String[] args) {
File file = new File("d:\fuckyou");
File file2 = new File("d:\fuckyou");
try {
//该方法的作用是创建指定的文件,该方法只能用于创建文件,不能用于创建文件夹,且文件路径中包含的文件夹必须存在
//file.createNewFile();
/* file.delete();//该方法的作用是删除当前文件或文件夹。如果删除的是文件夹,则文件夹必须为空。如果需要删除一个非空的文件夹,就必须删除该文件夹内部的每个文件和文件夹,然后再删除
boolean b = file.exists();//判断文件或者文件夹是否存在
String s = file.getAbsolutePath();//获取当前文件或者文件夹的绝对路径d:\fuckyou\1
String name = file.getName();//获取文件或者文件夹的名称,1
String parent = file.getParent();//获取父路径,d:fuckyou
boolean directory = file.isDirectory();//判断当前对象是否是目录
boolean file2 = file.isFile();
*/
long l = file.length();//返回文件存储时占用的字节数。该数值获得的是文件的实际大小
//file.listFiles();//返回当前文件夹下的所有对象
String[] list = file.list();
for (String string : list) {
System.out.println(string);
}
file.mkdir();//创建当前文件夹,而不创建该路径中其他的文件夹
file.mkdirs();//创建文件夹,如果当前路径中包含父目录不存在时,也会自动根据需要创建
file.renameTo(file2);//改名字
file.setReadOnly();//设置只读
//System.out.println(list);//返回当前文件夹下的所有文件或者文件夹的名称
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
-----------------------------------------------------------------
流:
流是一组有顺序,有起点和终点的字节集合,是对数据传输的总称或者抽象,即数据在两个设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
文件的上传,下载这个过程,都可以看成流
图片的传输也可以看成流
流的分类:
根据处理数据类型的不同分为:字符流,字节流
根据流的方向分为:输入流,输出流
根据流的分工分为:节点流和处理流;
字符流:以字符为单位的传输,(一个字符 = 2个字节,一个汉字占两个字节)
字节流:以字节为单位的传输
输入流:读的过程,相当于ctrl+c
输出流:写的过程,相当于ctrl+v
节点流:可以直接操作数据源,(数据源:文件中的数据,内存中的数据,假设只能一个字母一个字母的读取数据)
处理流:只能嵌套在节点流之上,处理数据源,可以一行一行的读取数据,加快处理速度。
-------------------------------------------------
拷贝文件,只拷贝第一层拷贝(包括空的文件夹和在根目录下的文件),如果文件夹中有文件,需要用到递归,这个例子没有使用
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class copyFile {
public static void main(String[] args) {
File file=new File("D:\fuckyou");
File file2=new File("E:\fuckyou");
if(!file2.exists())
{
file2.mkdirs(); //如果file2不存在,我首先把它创建出来
}
File[] ff=file.listFiles();
for(File aa:ff)
{
String newName=file2.getAbsolutePath()+"\"+aa.getName();
//file2.getAbsolutePath() 新目标的绝对路径 aa.getName()原文件名称 -----> 新目标的绝对路径原文件名称
if(aa.isDirectory())
{
copyFile.cpDir(newName);
}else
{
copyFile.cpfile(aa.getAbsolutePath(), newName);
}
}
}
//只创建文件夹
public static void cpDir(String newPath)
{
File file=new File(newPath);
file.mkdirs();
}
//拷贝文件
public static void cpfile(String oldPath,String newPath)
{
try {
FileInputStream fis=new FileInputStream(oldPath);
FileOutputStream fos=new FileOutputStream(newPath);
int num;
while((num=fis.read())!=-1)
{
fos.write(num);
}
fos.flush();
fos.close();
fis.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}