java文件操作+流的使用

File类的操作:
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();
        }
    }
}







原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/47da5cfb4b5e6bb734c977df0b0fbe79.html