欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java--IO流

程序员文章站 2022-07-10 17:54:21
1、File类(文件)一个File类对象可以表示具体的一个文件。(1)创建文件创建文本文件:如果文件不存在则创建,存在则创建失败;创建单个文件夹:同上;创建多级文件夹:同上。import java.io.File;import java.io.IOException;public class Filedemo1 { public static void main(String[] args) { try { File file=new Fil...

1、File类(文件)

一个File类对象可以表示具体的一个文件。
(1)创建文件
创建文本文件:如果文件不存在则创建,存在则创建失败;
创建单个文件夹:同上;
创建多级文件夹:同上。

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

public class Filedemo1 {
    public static void main(String[] args) {
        try {
            File file=new File("D:\\AI\\x9504.txt");
            boolean flag1=file.createNewFile();//创建一个新的普通文件
            System.out.println(flag1?"创建成功":"创建失败");
            //创建一个文件夹
            File file1=new File("D:\\AI\\x9505_java");
            boolean flag2=file1.mkdir();
            System.out.println(flag2?"文件夹创建成功":"文件夹创建失败");
            //上述两个方法 createNewFile 、mkdir 文件(夹)存在则不创建新的 不存在才会创建
            //创建多级文件
            File file2=new File("D:\\AI\\x9504_java\\html");
            boolean flag3=file2.mkdirs();
            System.out.println(flag3?"多级文件夹创建成功":"多级文件夹创建失败");

        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

java--IO流
(2)删除文件

import java.io.File;
public class Filedemo2 {
    public static void main(String[] args) {
        File file1=new File("D:\\AI\\x9504.txt");
        boolean flag1=file1.delete();
        System.out.println(flag1?"删除成功":"删除失败");
    }
}

(3)查询文件
判断指定路径名的文件是否存在;
获取文件的大小;
获取文件名;
获取文件路径。
String字符串:length(),是方法,返回字符串中字符的个数;
数组: 数组名.length 是属性,获取数组中元素的个数;
集合: 集合对象名.size()是方法,返回集合中元素的个数;
文件:文件名.length() 是方法,返回文件中的 字节数 文件的大小。
类名.方法名

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

public class Filedemo2 {
    public static void main(String[] args) {
        try {
//            File file1=new File("D:\\AI\\x9504.txt");
//        boolean flag1=file1.delete();
//        System.out.println(flag1?"删除成功":"删除失败");
            File file1=new File("D:\\AI\\x9504");
            boolean flag1=file1.exists();//判断某个文件(夹)是否存在
            if(flag1){
                System.out.println("您的文件已经存在不需要创建");
            }else {
                file1.mkdir();
            }
            //获取文件的大小 字节
            File file2=new File("D:\\AI\\x9505.txt");
            file2.createNewFile();
            long leg=file2.length();
            System.out.println("size="+leg);
            //返回文件名 和文件路径
            String filename=file2.getName();
            System.out.println("filename="+filename);
            String path=file2.getPath();
            System.out.println(path);
            String path1=file2.getAbsolutePath();
            System.out.println(path1);
        }catch (IOException e){
            e.printStackTrace();
        }
//
    }
}

java--IO流
(4)递归
递归:方法自己调用自己(易出现死循环,所以要控制好基础条件)。
isDirectory() 判断文件是否是文件夹
listFiles() 查询某个文件夹下的所有文件

/**
 *递归 找出某个文件夹下的所有文件
 */

import java.io.File;
public class FileDemo3 {
    public static void showFile(String pathname){
        File file1=new File(pathname);
        //判断文件是否是文件夹
        boolean flag1=file1.isDirectory();
        if(flag1){//是文件夹
            //选择某个文件夹下所有文件
            File[] files=file1.listFiles();
            //for(数据类型 变量名:数组/集合)
            for(File tempfile:files){
                boolean flag2=tempfile.isDirectory();
                if(flag2){
                    showFile(tempfile.getPath());
                }else {
                    String filepath=tempfile.getPath();
                    System.out.println("普通文件:"+filepath);
                }
            }
        }else {
            System.out.println("文件不是文件夹");
            String filepath=file1.getPath();
            System.out.println("普通文件:"+filepath);
        }
    }
    public static void main(String[] args) {
        FileDemo3.showFile("D:\\AI\\工作报告");
    }
}

2、IO流:输入输出流

1、字节流: 可以读取一切文件。

  • 字节输入流:从键盘\文本文件读入程序
  • InputStream(字节输入流祖宗类)
    FileInputStream(子类 文件字节输入流)
    BufferedInputStream(子类 字节缓冲输入流)
  • 字节输出流:从程序输出的
  • OutputStream
    FileOutputStream
    BufferedOutputStream
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class FileInputStream_demo1 {
    public static void main(String[] args) {
        try{
            //input 读 从文件读入程序
            //FileInputStream fis=new FileInputStream("D:\\AI\\x9505.txt");
            File file=new File("D:\\AI\\x9505.txt");
            if(file.exists()&&file.length()>0) {
                //文件字节输入流 从文件一个字节一个字节读数据  读中文乱码 中文字符至少占2个字节
                FileInputStream fileInputStream = new FileInputStream(file);
//                int ch = fileInputStream.read();
                //返回值-1 代表读到头了
//                System.out.println((char)ch);
                int ch=0;
                while ((ch=fileInputStream.read())!=-1){
                    System.out.println((char)ch);
                }
                //3、关闭流
                fileInputStream.close();
            }
        }
        catch (Exception e){
            System.out.println("FileNotFoundException");
        }
    }
}
import java.io.FileOutputStream;

public class FileOutputStream_demo2 {
    public static void main(String[] args) {
        try {
            //output 写 从程序写入文件里
            String data="hello html,hello ps";
            FileOutputStream fos = new FileOutputStream("D:\\AI\\x9504.txt");
            //字符串变字节数组
            byte[] bytes=data.getBytes();
            //如果文件不存在则会自动创建 存在则清空文件在写入(覆盖)
            //FileOutputStream fos = new FileOutputStream("D:\\AI\\x9504.txt",true);追加
            //如果append参数为true咋追加,否则覆盖。
            fos.write(bytes);
            fos.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class IO_demo3 {
    public static void main(String[] args) {
        try {
            FileInputStream fis=new FileInputStream("D:\\AI\\x9505.txt");
            FileOutputStream fos = new FileOutputStream("D:\\AI\\x9504.txt");
            int ch=0;
            while ((ch=fis.read())!=-1){
                fos.write(ch);
            }
            fis.close();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import java.io.*;

public class demo2 {
    public static void main(String[] args) {
        try {
            long startTime=System.currentTimeMillis();
            InputStream fis=new FileInputStream("D:\\AI\\x9504.txt");
            OutputStream fos=new FileOutputStream("D:\\AI\\x9505.txt");
            BufferedInputStream bis =new BufferedInputStream(fis);
            BufferedOutputStream bos=new BufferedOutputStream(fos);
            byte[] car=new byte[1024];
            int len=0;
            while((len=bis.read(car))!=-1){
                //System.out.println(len);
                bos.write(car,0,len);
            }
            bis.close();
            bos.close();
            long endTime=System.currentTimeMillis();
            System.out.println("spend time:"+(endTime-startTime)+"ms");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

2、字符流: 读取纯文本文件比较方便,已经帮我们处理的中文乱码问题。

  • FileReader 字符输入流
  • FileWriter 字符输出流
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;

public class ReaderDemo {
    public static void main(String[] args) {
      //  "D:\\AI\\x9504.txt"
        try {
            FileReader fr = new FileReader("D:\\\\AI\\\\x9504.txt");
            FileWriter fw = new FileWriter("D:\\\\AI\\\\x9505.txt");
            char[] car=new char[1024];
            int len=0;
            while((len=fr.read(car))!=-1){
                //char数组转字符串
               // String string = new String(car,0,len);
               // System.out.println(string);
                fw.write(car);
                //fw.write(string);
            }
            fr.close();
            fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

本文地址:https://blog.csdn.net/weixin_39274067/article/details/109559748