io流

给定一个路径 , 要获取该路径里面的 所有文件 及 文件夹
/**
 * 使用File类  及内部方法
 *
 *      给定一个路径 , 要获取该路径里面的 所有文件 及 文件夹
 *
 */
public class FileDemo {
    /**
     * 实现思路:
     * 1. 创建 File对象 ,关联给定的路径
     * 2. 可以获取该路径下的 文件数组
     *      判断如果是1个文件 ,直接打印该文件名
     *      如果是一个路径, 递归 调用(自己调用自己)
     *
     *
     *  API 指的是 类 方法 字段
     *
     *      更新需求:
     *      如果 文件后缀是 .java结尾 ,那么打印.Java文件
     * @param args
     */
    public static void main(String[] args) {
        String path = "C:\\";   //路径
        File srcFile = new File(path);  //源文件

        show(srcFile);
    }

    private static void show(File srcFile) {

        File[] files = srcFile.listFiles();
        //遍历目录下所有文件 或文件夹
        for(File file:files){

            if(file.isFile()){
                //System.out.println(file.getAbsolutePath()); //拿到该文件绝对路径

                if(file.getName().endsWith(".java")){
                    System.out.println(file.getAbsolutePath());
                }
            }

            if(file.isDirectory()){ //如果它本来就是目录
                // System.out.println(file.getAbsolutePath());
                show(file);
            }
        }
    }
}
字节流

这里示例的是一个照片的上传

public class UploadFile {
    public static void main(String[] args) throws Exception {
        //图片的路径
        File srcFile=new File("C:\\Users\\76178\\Pictures\\Saved Pictures");
        //上传后的路径
        String path = "C:\\upload\\";

        File uploadFile=new File(path);
        if(!uploadFile.exists()){//判断如果没有该目录
            uploadFile.mkdir();//创建 目录
        }

        File[] files = srcFile.listFiles();
        for (File file:files){ //循环 所有图片  file 是单独1张图
            //获得输入和输入流
            InputStream is=new FileInputStream(file);

            //目标路径  (为解决 文件重名覆盖问题 ,可以使用UUID 或者 时间戳 (毫秒值))
            String distPath=path+System.currentTimeMillis()+file.getName();
            OutputStream os=new FileOutputStream(distPath);

            //读写的具体实现
            byte[] b=new byte[1024];
            int len=0; //每次读取的长度  , 如果读取到文件末尾 该值等于-1代表结束
            while ((len=is.read(b))!=-1){
                os.write(b,0,len);
            }
            //关闭流
            os.close();
            is.close();
        }

    }
}
字符流
/**
 * 字符流
 */
public class CharacterDemo {
    public static void main(String[] args) throws Exception {
        //创建 字符流 读和写的对象 , 读取 d盘 aaa.txt内容 ,通过 写的对象 再拷贝1份到 d盘
        //Reader reader=new BufferedReader(new FileReader("D:\\aaa.txt"));方式一
        BufferedReader reader=new BufferedReader(new FileReader("D:\\aaa.txt"));
        // Reader reader = new BufferedReader(new FileReader(new File("c:\\a.txt")));

        //Writer writer=new BufferedWriter(new FileWriter("D:\\bbb.txt"));方式一
        BufferedWriter writer=new BufferedWriter(new FileWriter("D:\\bbb.txt"));

        //读取文本有2种方式 ,方式1: 按照字符读取 ,方式2:每次读取1行

        /*
        1.按照字符读取 Reader
        可以复制出换行
        char[] c=new char[20];
        int len=0;
        while ((len=reader.read(c))!=-1){
            writer.write(c,0,len);
        }

         */



        /*
        2:每次读取1行
        每次读取1行 BufferedReader
         */
        String line;
        int a=1;//给每一行前面加个行数
        while ((line=reader.readLine())!=null){//.readLine()为BufferedReader里的属性
            writer.write(a+line);
            writer.newLine();//换行   .newLine()为BufferedReader里的属性
            writer.flush();
            a++;
        }

        //关闭资源
        writer.close();
        reader.close();
    }
}
打印流
public class WriterDemo {
    public static void main(String[] args) throws Exception {
        //打印流
        PrintWriter pw=new PrintWriter("a.txt","UTF-8");//创建当前目录下 每次运行会刷新文档里边的内容
        pw.print("打印流测试1");
        pw.write("测试完成1");
        pw.write("谢谢1");
        pw.close();
        
        /*FileWriter fw = new FileWriter("ccc.txt",true);//true表示追加,每次运行会在文档后边继续追加

        fw.write("2222测试 fileWriter...");
        fw.write("12312312312312312-----");
        fw.write("1111测试 fileWriter...");
        fw.close();*/
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值