File类,IO流

File类

  1. 创建于删除;
//如果文件存在返回false;否则返回true
boolean createNewFile();
//创建一个File对象所对应的目录,成功返回true,失败返回false
//必须是路径而不能为文件
//只会创建最后一级目录,如果上级不存在则会抛出异常。
boolean mkdir();
//创建一个File对象所对应的目录,成功返回true,失败返回false
//必须是路径而不能为文件
//创建多级目录,创建路径中所有不存在的目录
boolean mkdirs();
//如果存在返回true并且删除,否则返回false
boolean delete();
//在虚拟机终止,删除File对象所表示的文件或目录
void deleteOnExit();
  1. 判断方法;
//判断文件是否可以执行
boolean canExecute();
//判断文件是否可以读取
boolean canRead();
//判断文件是否可以写
boolean canWrite();
//判断文件是否存在
boolean exists();
//判断是否是目录
boolean isDirectory();
//判断是否是文件
boolean isFile();
//判断是否是隐藏文件或者隐藏目录
boolean isHidden();
//判断是否是绝对路径,文件不存在也能判断
boolean isAbsolute();
  1. 获取方法;
//返回文件或是目录的名称
String getName();
//返回路径
String getPath();
//返回绝对路径
String getAbsolutePath();
//返回父目录,如果没有父目录则返回NULL
String getParent();
//返回最后一次修改时间
long lastModified();
//返回文件长度
long length();
//列出所有的根目录
File[] listRoots();
//返回一个字符串数组,给定路径下的文件或目录名称字符串
String[] list();
//返回满足过滤器要求的字符串数组
String[] list(FilenameFilter filter);
//返回一个文件对象数组,给定路径下的目录文件
File[] listFiles();
//返回满足过滤器要求的一个文件对象数组
File[] listFiles(FilenameFilter filter);

IO流
__IO流的四中类型:Reader、InputStream、Writer、OutputStream。

  1. InputStream
    输入字节流的父类。它是一个抽象类,包含三个方法:
//读取一个字节并以整数的形式返回(0~255),如果返回-1已到输入流的末尾。
int read()//读取一系列字节并存储到一个数组buffer,返回实际读取的字节数,如果读取前已
到输入流的末尾返回-1int read(byte[] buffer)//读取length个字节并存储到一个字节数组buffer,从off位置开始存,最多len,
返回实际读取的字节数,如果读取前以到输入流的末尾返回-1int read(byte[] buffer, int off, int len)
  1. Reader
    所有的输入字符流的父类,它是一个抽象类。
//读取一个字符并以整数的形式返回(0~255),如果返回-1已到输入流的末尾。
int read()//读取一系列字符并存储到一个数组buffer,返回实际读取的字符数,如果读取前已
到输入流的末尾返回-1int read(char[] cbuf)//读取length个字符,并存储到一个数组buffer,从off位置开始存,最多读取len,
返回实际读取的字符数,如果读取前以到输入流的末尾返回-1int read(char[] cbuf, int off, int len)

执行完流操作后要调用 close()方法来关闭输入流,因为程序里打开的IO资源 不属于 内存资源,垃圾回收机制无法回收该资源。所以显示关闭文件IO资源。

移动流中的指针位置

//在此输入流中标记当前的位置
//readlimit - 在标记位置失效前可以读取字节的最大限制。
void mark(int readlimit)
// 测试此输入流是否支持 mark 方法
boolean markSupported()
// 跳过和丢弃此输入流中数据的 n 个字节/字符
long skip(long n)
//将此流重新定位到最后一次对此输入流调用 mark 方法时的位置
void reset(

  1. OutputStream
    输出字节流,包含4个方法
//向输出流中写入一个字节数据,该字节数据为参数b的低8位。
void write(int b) ;
//将一个字节类型的数组中的数据写入输出流。
void write(byte[] b);
//将一个字节类型的数组中的从指定位置(off)开始的,len个字节写入到输出流。
void write(byte[] b, int off, int len);
//将输出流中缓冲的数据全部写出到目的地。
void flush();
  1. Writer
    输出字符流的父类,它是一个抽象类,主要包含如下六个方法
//向输出流中写入一个字符数据,该字节数据为参数b的低16位。
void write(int c);
//将一个字符类型的数组中的数据写入输出流,
void write(char[] cbuf)
//将一个字符类型的数组中的从指定位置(offset)开始的,length个字符写入到输出流。
void write(char[] cbuf, int offset, int length);
//将一个字符串中的字符写入到输出流。
void write(String string);
//将一个字符串从offset开始的length个字符写入到输出流。
void write(String string, int offset, int length);
//将输出流中缓冲的数据全部写出到目的地。
void flush()

Writer比OutputStream多出两个方法,主要是支持写入字符和字符串类型的数据。

一、RandomAccessFile
RandomAccessFile既可以读取文件内容,也可以向文件输出数据。

import java.io.*;
import java.nio.charset.StandardCharsets;

public class FileMain {
    public static void main(String[] args) {
//        String filePath = "E:" + File.separator +
//                "untitled" + File.separator + "src" + File.separator + "Main.java";
//        fileInput(filePath);
//        bufferInputStream(filePath);
        String filePath = "E:" + File.separator +
                "untitled" + File.separator + "src" + File.separator + "randomAccessFile.java";
//            createFile(filePath);
        randomAccessFile(filePath);
    }

    private static void randomAccessFile(String filePath) {
        String content = "import java.io.*;" +
                "public class randomAccessFile{" +
                "   public static void main(String[]args){" +
                "System.out.println(\"创建文本randomAccessFile\");" +
                "}" +
                "}";

        new FileWriteThread(content.length(), content.getBytes(StandardCharsets.UTF_8), filePath).start();

    }

    static class FileWriteThread extends Thread {
        private int read;
        private byte[] content;
        private String path;

        public FileWriteThread(int read, byte[] content, String path) {
            this.read = read;
            this.content = content;
            this.path = path;
        }

        @Override
        public void run() {
            RandomAccessFile accessFile = null;
            try {
                accessFile = new RandomAccessFile(path, "rw");
//                accessFile.seek(0);
                accessFile.write(content);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (accessFile != null) {
                    try {
                        accessFile.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
            }
        }
    }

    private static void createFile(String filePath) {
        String content = "import java.io.*;" +
                "public class DemoTest{" +
                "   public static void main(String[]args){" +
                "System.out.println(\"创建文本DemoTest\");" +
                "}" +
                "}";
        File file = new File(filePath);

        OutputStream outputStream = null;
        try {
            if (!file.exists()) {
                file.createNewFile();
            }
            file.setReadable(true);
            file.setWritable(true);
            outputStream = new FileOutputStream(file);
            outputStream.write(content.getBytes());

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private static void bufferInputStream(String filePath) {
        try {
            File file = new File(filePath);
            if (!file.isFile()) {
                return;
            }
            InputStream fileInputStream = new FileInputStream(file.getPath());
            BufferedInputStream bis = new BufferedInputStream(fileInputStream);
            byte[] bytes = new byte[(int) file.length()];
            int len = 0;
            if ((len = bis.read(bytes)) != -1) {
                System.out.println(new String(bytes, 0, len));
            }
            bis.close();
            fileInputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void fileInput(String filePath) {
        File mainFile = new File(filePath);
        if (!mainFile.isFile()) {
            System.out.println("文件不存在");
            return;
        }
        try {
            FileInputStream fis = new FileInputStream(mainFile.getAbsoluteFile());
            byte[] fLength = new byte[(int) mainFile.length()];
            while (fis.read(fLength) != -1) {
                System.out.println(new String(fLength));
            }

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值