Java-File类 Scanner类常用方法

目录

1.File类

2.Scanner类

1.File类

Java 中的 File 类用于处理文件和目录的操作。以下是关于 File 类的常见操作,包括从文件读取创建新文件以及异常处理 IOException 的详细讲解。

1. 导入必要的包

在使用 File 类之前,需要导入 java.io 包中的相关类:

java

import java.io.File;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.Scanner;

2. 创建 File对象

File类用于表示文件或目录的路径。可以通过传递文件路径来创建 File对象:

File file = new File("example.txt");

3. 检查文件是否存在

在操作文件之前,通常需要检查文件是否存在:

if (file.exists()) {

    System.out.println("文件存在");

} else {

    System.out.println("文件不存在");

}

4. 从文件读取数据

可以使用 Scanner类从文件中读取数据。需要注意的是,读取文件时可能会抛出 FileNotFoundException,因此需要进行异常处理:

try {

         Scanner scanner = new Scanner(file);

         while (scanner.hasNextLine()) {

                  String line = scanner.nextLine();

                  System.out.println(line);

          }

          scanner.close();

} catch (FileNotFoundException e) {

            System.out.println("文件未找到: " + e.getMessage());

}

5. 创建新文件

可以使用 createNewFile()方法创建新文件。如果文件已存在,则不会创建新文件:

try {

          if (file.createNewFile()) {

                           System.out.println("文件创建成功");

          } else {

                           System.out.println("文件已存在");

                     }

} catch (IOException e) {

                    System.out.println("创建文件时出错: " + e.getMessage());

}

6. 异常处理 IOException

在文件操作中,可能会遇到各种 I/O 异常,如文件不存在、权限问题等。使用 `try-catch` 块可以捕获并处理这些异常:

try {

    // 文件操作代码

} catch (IOException e) {

    System.out.println("发生 I/O 错误: " + e.getMessage());

}

7. 完整示例

以下是一个完整的示例,展示了如何创建文件、读取文件内容以及处理异常:

import java.io.File;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.Scanner;

public class FileExample {

    public static void main(String[] args) {

        File file = new File("example.txt");

        // 创建新文件

        try {

            if (file.createNewFile()) {

                    System.out.println("文件创建成功");

            } else {

                    System.out.println("文件已存在");

            }

        } catch (IOException e) {

                    System.out.println("创建文件时出错: " + e.getMessage());

        }

        // 从文件读取数据

        try {

            Scanner scanner = new Scanner(file);

            while (scanner.hasNextLine()) {

                       String line = scanner.nextLine();

                       System.out.println(line);

            }

            scanner.close();

        } catch (FileNotFoundException e) {

                    System.out.println("文件未找到: " + e.getMessage());

        }

    }

}

8.总结

File类用于表示文件和目录的路径。

Scanner类 用于从文件中读取数据。

异常处理 是文件操作中的重要部分,特别是 IOException 和 FileNotFoundException。

 通过 createNewFile()方法可以创建新文件,并通过 exists() 方法检查文件是否存在。

这些操作是 Java 文件处理的基础,掌握它们可以帮助你有效地进行文件读写和管理。


9. 注意事项

File file = new File("example.txt");

执行这句之前,example.txt 是已经存在了还是没建立呢?

在执行 File file = new File("example.txt");这行代码时,example.txt文件可能已经存在也可能不存在

这行代码本身并不会创建文件,它只是创建了一个 File对象,表示对文件 example.txt的引用。

此时,文件是否已经存在取决于文件系统中是否已经有一个名为 example.txt 的文件

1. 如果 example.txt已经存在:

   - 当你执行 File file = new File("example.txt");时,file对象会指向这个已经存在的文件。

   - 你可以通过 file.exists()方法检查文件是否存在:

     if (file.exists()) {

            System.out.println("文件已存在");

     } else {

            System.out.println("文件不存在");

     }

2. 如果 example.txt不存在:

   - 当你执行 File file = new File("example.txt");时,file对象仍然会被创建,但它指向的文件在文件系统中并不存在。

   - 你可以通过 file.createNewFile() 方法创建这个文件:

     try {

         if (file.createNewFile()) {

             System.out.println("文件创建成功");

         } else {

             System.out.println("文件已存在");

         }

     } catch (IOException e) {

         System.out.println("创建文件时出错: " + e.getMessage());

     }

3.总结:

File file = new File("example.txt");:

  - 这行代码只是创建了一个 File对象,表示对文件 example.txt的引用。

  - 它不会检查文件是否存在,也不会创建文件。

- 文件是否存在:

  - 文件是否已经存在取决于文件系统中是否有一个名为 example.txt 的文件。

  - 你可以通过 file.exists()方法检查文件是否存在。

- 创建文件:

  - 如果文件不存在,可以通过 file.createNewFile()方法创建文件。

4.示例:

以下是一个完整的示例,展示了如何检查文件是否存在以及如何创建文件:

import java.io.File;

import java.io.IOException;

public class FileExample {

    public static void main(String[] args) {

        // 创建 File 对象,表示对文件 example.txt 的引用

        File file = new File("example.txt");

        // 检查文件是否存在

        if (file.exists()) {

            System.out.println("文件已存在");

        } else {

            System.out.println("文件不存在");

            // 尝试创建文件

            try {

                if (file.createNewFile()) {

                          System.out.println("文件创建成功");

                } else {

                          System.out.println("文件创建失败");

                }

            } catch (IOException e) {

                          System.out.println("创建文件时出错: " + e.getMessage());

            }

        }

    }

}

 输出示例

1. 如果 example.txt已经存在:

   文件已存在

2. 如果 example.txt不存在:

   文件不存在

   文件创建成功

总结:

- File file = new File("example.txt");只是创建了一个 File对象,不会创建文件。

- 文件是否已经存在需要通过 file.exists()检查。

- 如果文件不存在,可以通过 file.createNewFile()创建文件。


2.Scanner类

nextLine()  next()    hasNext() 

在 Java 中,Scanner 类提供了多种方法来读取输入数据,包括 nextLine()next() 和 hasNext()

这些方法在读取输入时有不同的行为和用途。以下是它们的详细区别:

1. nextLine()方法

- 功能:读取输入中的整行内容(包括空格),直到遇到换行符(`\n`)为止。

- 返回值:返回当前行的字符串(不包括换行符)。

- 特点:- 读取一整行,包括空格。

              - 读取后,Scanner的位置会移动到下一行的开头。

- 示例:

  Scanner scanner = new Scanner(System.in);

  System.out.println("请输入一行文本:");

  String line = scanner.nextLine();

  System.out.println("你输入的是: " + line);

  - 输入:Hello World

  - 输出:你输入的是: Hello World

2. next()方法

- 功能:读取输入中的下一个单词(以空格或换行符为分隔符)。

- 返回值:返回下一个单词(字符串)。

- 特点: - 只读取一个单词,遇到空格或换行符就停止。

               - 不会读取空格或换行符。

               - 读取后,Scanner的位置会移动到下一个单词的开头。

- 示例:

  Scanner scanner = new Scanner(System.in);

  System.out.println("请输入一段文本:");

  String word = scanner.next();

  System.out.println("你输入的第一个单词是: " + word);

  - 输入:Hello World

  - 输出:你输入的第一个单词是: Hello

3. hasNext()方法

- 功能:检查输入中是否还有下一个单词(以空格或换行符为分隔符)。

- 返回值:返回一个布尔值(true或 false),表示是否还有下一个单词。

- 特点:  - 通常与 next() 或 nextLine() 结合使用,用于循环读取输入。

                - 不会移动 Scanner的位置,只是检查是否有下一个单词。

- 示例

 Scanner scanner = new Scanner(System.in);

  System.out.println("请输入一段文本(输入 'exit' 结束):");

  while (scanner.hasNext()) {

      String word = scanner.next();

      if (word.equals("exit")) {

          break;

      }

      System.out.println("你输入的单词是: " + word);

  }

  - 输入:Hello World exit

  - 输出:

    你输入的单词是: Hello

    你输入的单词是: World

4. hasNextLine() 方法

- 功能:检查输入中是否还有下一行。

- 返回值:返回一个布尔值(true 或 false),表示是否还有下一行。

- 特点:- 通常与 nextLine()结合使用,用于循环读取多行输入。

           - 不会移动 Scanner 的位置,只是检查是否有下一行。

- 示例:

  Scanner scanner = new Scanner(System.in);

  System.out.println("请输入多行文本(输入空行结束):");

  while (scanner.hasNextLine()) {

      String line = scanner.nextLine();

      if (line.isEmpty()) {

          break;

      }

      System.out.println("你输入的行是: " + line);

  }

  - 输入:

    Hello

    World

    (空行)

  - 输出:

    你输入的行是: Hello

    你输入的行是: World

5. 总结对比

 方法     功能返回值特    点 
nextLine()读取一整行(包括空格)字符串读取到换行符为止移动位置到下一行开头 
next()读取下一个单词(以空格分隔)字符串读取到空格或换行符为止,不读取分隔符
hasNext() 检查是否有下一个单词布尔值不移动位置,仅检查
hasNextLine()检查是否有下一行布尔值不移动位置,仅检查

6. 在你的代码中的应用

try {

    Scanner scanner = new Scanner(file);

    while (scanner.hasNextLine()) {       // 检查是否有下一行

             String line = scanner.nextLine();  // 读取整行

             System.out.println(line);              // 打印整行

    }

    scanner.close();

} catch (FileNotFoundException e) {

              System.out.println("文件未找到: " + e.getMessage());

}

- hasNextLine():用于检查文件中是否还有下一行。

- nextLine():     用于读取文件的整行内容。

- 这种组合适合逐行读取文件内容。

7. 注意事项

- next()和 nextLine()的混用:

  - 如果在一个 Scanner对象中混用 next() 和 nextLine(),可能会导致意外的行为。

    例如,next() 读取单词后,nextLine() 可能会读取剩余的空白行。

  - 解决方法:在使用 nextLine()之前,确保没有未处理的输入(如换行符)。

- 关闭 Scanner:

  - 使用完 Scanner 后,应该调用 scanner.close() 释放资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值