Java笔记


1、File类
File 类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。

File 类提供了如下三种形式构造方法。 ​ File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文 件。 ​ File(String path, String name):path 是路径名,name 是文件名。 ​ File(File dir, String name):dir 是路径对象,name 是文件名。

使用任意一个构造方法都可以创建一个 File 对象,然后调用其提供的方法对文件进行操作。在下表中列出了 File 类的常用方法及说明。

File 类中有以下两个常用常量: public static final String pathSeparator:指的是分隔连续多个路径字符串的分隔符,Windows 下指;。例如 java -cp test.jar;abc.jar HelloWorld。 public static final String separator:用来分隔同一个路径字符串中的目录的,Windows 下指/。 

注意:可以看到 File 类的常量定义的命名规则不符合标准命名规则,常量名没有全部大写,这是因为 Java 的发展经过了一段相当长的时间,而命名规范也是逐步形成的,File 类出现较早,所以当时并没有对命名规范有严格的要求,这些都属于 Java 的历史遗留问题。

2、获取文件属性
在 Java 中获取文件属性信息的第一步是先创建一个 File 类对象并指向一个已存在的文件, 然后调用表 1 中的方法进行操作。

3、创建和删除文件
File 类不仅可以获取已知文件的属性信息,还可以在指定路径创建文件,以及删除一个文件。创建文件需要调用 createNewFile() 方法,删除文件需要调用 delete() 方法。无论是创建还是删除文件通常都先调用 exists() 方法判断文件是否存在。

注意:在操作文件时一定要使用 File.separator 表示分隔符。在程序的开发中,往往会使用 Windows 开发环境,因为在 Windows 操作系统中支持的开发工具较多,使用方便,而在程序发布时往往是直接在 Linux 或其它操作系统上部署,所以这时如果不使用 File.separator,则程序运行就有可能存在问题。关于这一点我们在以后的开发中一定要有所警惕。

4、创建和删除目录
File 类除了对文件的创建和删除外,还可以创建和删除目录。创建目录需要调用 mkdir() 方法,删除目录需要调用 delete() 方法。无论是创建还是删除目录都可以调用 exists() 方法判断目录是否存在。

5、遍历目录
方法有如下两种重载形式:

1. String[] list()

该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null。

提示:list() 方法返回的数组中仅包含文件名称,而不包含路径。但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

2. String[] list(FilenameFilter filter)

该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter 过滤器的文件和目录,如果 filter 为 null,则接受所有名称。

RandomAccessFile类
        所谓动态读取是指从文件的任意位置开始访问文件,而不是必须从文件开始位置读取到文件末尾。动态读取需要用到 Java 中的 RandomAccessFile 类。

        RandomAccessFile 是 Java 输入/输出流体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。由于 RandomAccessFile 可以从任意位置访问文件,所以在只需要访问文件部分内容的情况下,使用 RandonAccessFile 类是一个很好的选择。

        RandomAccessFile 对象包含了一个记录指针,用以标识当前读写处的位置,当程序新创建一个 RandomAccessFile 对象时,该对象的文件记录指针位于文件头(也就是 0 处),当读/写了 n 个字节后,文件记录指针将会向后移动 n 个字节。除此之外,RandonAccessFile 可以自由移动该记录指针,既可以向前移动,也可以向后移动。

注意:如果使用 rw 方式声明 RandomAccessFile 对象时,要写入的文件不存在,系统将自动进行创建。

写入文件,代码如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
 
public class RandomAccessFileDemo01 {
    public static void main(String[] args) throws Exception {
        /**
         * RandomAccessFile 是 Java 输入/输出流体系中功能最丰富的文件内容访问类,
         * 它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。
         * 由于 RandomAccessFile 可以从任意位置访问文件,所以在只需要访问文件部分内容的情况下,
         * 使用 RandomAccessFile 类是一个很好的选择
         *
         * RandomAccessFile类提供了两个构造方法:
         *      RandomAccessFile(File  file, String mode)
         *          其中file表示文件对象,mode表示文档的属性(常用属性有r:只读模式,w:只写模式,
         *              rw:可读可写模式)
         *
         *      RandomAccessFile(String path, String mode)
         *          其中path表示文件所在路径,mode表示文档的属性(常用属性有r:只读模式,w:只写模式,
         *              rw:可读可写模式)
         *          注意:当指定路径下文件不存在,则会创建改文件对象
         */
        // 任务:将数据写入dir/a.txt文件当中
        // 创建file对象
        File f = new File("dir/a.txt");
        // 创建随机文件对象
        RandomAccessFile raf = new RandomAccessFile(f, "rw");
        // 将hello java写入文件当中
        // String content = "Hello Java";
        String content = "今天安顺天气真好";
        byte[] bytes = content.getBytes("UTF-8");
 
        /**
         * 注意:
         *      每次写入内容时都会清空原本的内容
         */
        raf.write(bytes);
 
        raf.write(1);
 
        System.out.println("写入完毕");
 
        // 关闭文件
        raf.close();
 
    }

​​​​读取文件,代码如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
 
public class RandomAccessFileDemo02 {
    public static void main(String[] args) throws Exception {
        /**
         * 读取文件
         */
        // 创建file对象
        File f = new File("dir/a.txt");
        // 创建随机文件对象
        RandomAccessFile raf = new RandomAccessFile(f, "r");
 
        // 读取文件
        // int read = raf.read();// 每次读取一个字节
        // String s = raf.readLine();// 读取一行数据
        // 获取文件内容长度
        long length = raf.length();
        byte[] data = new byte[(int) length];
        // 读取数据
        raf.read(data);
 
        // 将二进制数据转为中文
        String result = new String(data, "Utf-8");
 
        System.out.println(result);
 
        // 关闭文件流
        raf.close();
 
    }

根据上面所学的制作一个简易的记事本程序

import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.util.Scanner;
 
public class RAFDemo03 {
    public static void main(String[] args) throws Exception {
        /**
         * 任务:
         *      制作一个简易的记事本程序
         *      要求:
         *          用户输入记事本名字打开记事本,如果不存在则创建,当用户输入Q或者q的时候
         *      保存并且退出记事本
         */
        // 创建扫描器对象
        Scanner scan = new Scanner(System.in);
        System.out.println("欢迎来到记事本,请输入要打开的记事本名字,如果不存在则会创建:");
        String name = scan.nextLine();
 
        // 创建随机读取文件对象
        RandomAccessFile raf = new RandomAccessFile("dir/"+name+".txt", "rw");
 
        String cont = "";
 
        while (true) {
            System.out.println("请输入内容:");
            cont = scan.nextLine();
            // 判断用户是否退出
            if ("Q".equals(cont) || "q

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java笔记是由北京大学青鸟教育推出的一款专门针对Java语言的学习工具。它以全面、系统、实践为特点,通过详细的代码示例和清晰的讲解,帮助学习者全面掌握Java编程语言。 Java笔记采用了线上与线下相结合的学习模式。学员可以通过手机、平板电脑、电脑等设备在线学习,还可以在学习过程中随时记录自己的学习笔记。同时,北大青鸟还为学员提供线下实践环境,学员可以在实验室里亲自动手实践所学知识,加深理解和应用。 Java笔记的内容非常全面,包括了Java语言的基本语法、面向对象编程、异常处理、流操作、多线程、数据库操作等众多知识点。除了理论知识,Java笔记还提供了大量的实例代码,可供学员参考和模仿。这样的学习方式既帮助学员理解Java的基本概念,又能让他们运用所学知识解决实际问题。 与此同时,Java笔记还注重学员的互动交流。在学习过程中,学员可以利用笔记功能记录学习心得和疑惑,还可以在论坛上与其他学员进行讨论和交流。这种互动形式既能促进学员之间的学习互助,也能更好地帮助学员理解和应用所学知识。 总之,Java笔记是北大青鸟推出的一款专注于Java语言学习的工具,通过系统的课程设置、丰富的实例代码和互动交流的方式,帮助学员全面掌握Java编程知识,提升编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值