Java---文件,流✨❤️

文章目录

1.遍历文件夹

一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。

遍历这个目录下所有的文件(不用遍历子目录)

找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名

注: 最小的文件不能是0长度

java 复制代码
package Basic.wordhard;

import java.io.File;

public class Demo {
    public static void main(String[] args) {
        File f=new File("C:\\Windows");
        // 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
        File fs[]=f.listFiles();
        File max_file = null,min_file=null;
        long min=Long.MAX_VALUE;
        long max=0;
        for(File e:fs){
            if(e.length()>max){
                max=e.length();
                max_file=e;
            }
            if(e.length()!=0&&e.length()<min){
                min=e.length();
                min_file=e;
            }
        }
        System.out.println("找出的最大文件为"+max_file.getName()+"    文件大小"+max);
        System.out.println("找出的最小文件为"+min_file.getName()+"    文件大小"+min);
        }
}

2.遍历子文件夹

同上的练习,要求遍历子文件夹

java 复制代码
package Basic.wordhard;
import java.io.File;
public class Demo {
    static File minFile = null;
    static File maxFile = null;
    public static void main(String[] args) {
        File dir = new File("C:\\WINDOWS");
        traverseFolder(dir);

        if (minFile != null) {
            System.out.println("最小的文件是 " + minFile.getName() + ",其大小是 " + minFile.length() + " 字节");
        }
        if (maxFile != null) {
            System.out.println("最大的文件是 " + maxFile.getName() + ",其大小是 " + maxFile.length() + " 字节");
        }
    }
    public static void traverseFolder(File dir) {
        File[] files = dir.listFiles();
        if (files == null || files.length == 0) {
            return;
        }
        for (File file : files) {
            if (file.isFile()) {
                if (minFile == null || (file.length() < minFile.length() && file.length() != 0)) {
                    minFile = file;
                }
                if (maxFile == null || file.length() > maxFile.length()) {
                    maxFile = file;
                }
            } else if (file.isDirectory()) {
                traverseFolder(file);
            }
        }
    }
}

3.练习流

当不同的介质之间有数据交互的时候,JAVA就使用流来实现。

数据源可以是文件,还可以是数据库,网络甚至是其他的程序

比如读取文件的数据到程序中,站在程序的角度来看,就叫做输入流

输入流: InputStream

输出流:OutputStream

题目:建立一个文件输入流

java 复制代码
package Basic.wordhard;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) {
        try{
            File f=new File("D://lol.txt");
            FileInputStream fis=new FileInputStream(f);
            // 通过这个输入流,就可以把数据从硬盘,读取到Java的虚拟机中来,也就是读取到内存中
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

4.以字节流的形式读取文件内容

InputStream是字节输入流,同时也是抽象类,只提供方法声明,不提供方法的具体实现。

FileInputStream 是InputStream子类,以FileInputStream 为例进行文件读取

java 复制代码
package Basic.wordhard;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) {
        try{
            File f=new File("d://lol.txt");
            FileInputStream fis=new FileInputStream(f);
            byte array[]=new byte[(int) f.length()];
            fis.read(array);
            for(byte e:array){
                System.out.println(e);
            }
            fis.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

5.以字节流的形式向文件写入数据顶折纠问

OutputStream是字节输出流,同时也是抽象类,只提供方法声明,不提供方法的具体实现。

FileOutputStream 是OutputStream子类,以FileOutputStream 为例向文件写出数据

注: 如果文件d:/lol2.txt不存在,写出操作会自动创建该文件。

但是如果是文件 d:/xyz/lol2.txt,而目录xyz又不存在,会抛出异常

java 复制代码
package Basic.wordhard;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) {
        try{
            File f=new File("D:\\lol2.txt");
            FileOutputStream fos=new FileOutputStream(f);
            byte Date[]={97,98};
            fos.write(Date);
            fos.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

6 .写入数据到文件

以字节流的形式向文件写入数据 中的例子,当lol2.txt不存在的时候,是会自动创建lol2.txt文件的。

但是,如果是写入数据到d:/xyz/lol2.txt,而目录xyz又不存在的话,就会抛出异常。

那么怎么自动创建xyz目录?

如果是多层目录 d:/xyz/abc/def/lol2.txt 呢?

java 复制代码
package Basic.wordhard;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) {
        try{
            File f=new File("d:/xyz/abc/def");
            if(!f.exists()){
                f.mkdirs();
            }
            byte data[]={97,98};
            File f1=new File(f,"lol2.txt");
            FileOutputStream fos=new FileOutputStream(f1);
            fos.write(data);
            fos.close();
        }catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}
相关推荐
码农小野11 分钟前
基于SpringBoot的自习室预订系统
java·spring boot·后端
lizi888881 小时前
单组件的编写
java
java_heartLake1 小时前
设计模式之代理模式
java·设计模式·代理模式
魏 无羡2 小时前
pgsql 分组查询方法
java·服务器·数据库
兩尛2 小时前
java--面向对象编程(中级部分)
java·开发语言
Xxxx. .Xxxx3 小时前
C语言程序设计实验与习题指导 (第4版 )课后题-第二章+第三章
java·c语言·开发语言
姜西西_3 小时前
[Spring]Spring MVC 请求和响应及用到的注解
java·spring·mvc
逸狼3 小时前
【JavaEE初阶】多线程6(线程池\定时器)
java·开发语言·算法
qq_35323353893 小时前
【原创】java+springboot+mysql科研成果管理系统设计与实现
java·spring boot·mysql·mvc·web
dawn1912283 小时前
SpringMVC 入门案例详解
java·spring·html·mvc