Java文件输入输出(简单易懂版)

写在前面

  1. 在Java中不论文件输入还是输出都会用到File类,参考这篇文章Java File类(文件操作类)详解
  2. 这里会涉及到绝对路径、相对路径、路径中的斜杠“/”和反斜杠“\”,有些小伙伴可能不熟悉,参考这两篇文章绝对路径和相对路径详解斜杠’/’ 和反斜杠’’

文件输入

我们先来看一下此处的路径,Test.java是我们的程序代码,Coldplay.txt 是我们待会儿要读的文件。
在这里插入图片描述
废话不多说,直接上代码:

import java.io.File;
import java.io.IOException;
import java.util.*;

public class Test {
    // 如果用一个不存在的文件构造 Scanner 可能会抛出I/O异常
    // 为了简单起见,只要在方法头中声明 throws Exception 即可
    public static void main(String[] args) throws IOException {
        // File 类是一个代表文件或目录的类,通常使用路径来初始化,允许使用绝对路径和相对路径
        // 此处使用相对路径
        File infile = new File("Coldplay.txt");

        // 读文件, 并将读到的内容打印到控制台
        // 为了避免一些乱码问题,我们制定编码方式为 UTF-8
        Scanner in = new Scanner(infile, "UTF-8");
        while (in.hasNext()) {
            String s = in.nextLine();
            System.out.println(s);
        }

        // 释放资源
        in.close();
    }
}

可以看到控制台上确实把 Coldplay.txt 中的内容打印了出来。
在这里插入图片描述

另外关于路径有一点要说明,上面这个代码用的是相对路径,因为 Test.java 和 Coldplay.txt 在一个目录下,所以 “Coldplay.txt” 就可以;当然我们也可以用绝对路径,但是要注意
“D:\java_code\Coldplay.txt” ×
“D:\\java_code\\Coldplay.txt” √
“D:/java_code/Coldplay.txt” √
这是因为反斜杠\既可以在windows里表示路径分隔符,也可以在Java里表示转义字符,所以我们如果按照第一行的写法,Java不知道我们到底想表示路径分隔符还是转义字符。
所以如果需要在 Windows 的路径下包括反斜线,则应该使用两条反斜线(第二行)或直接使用斜线“/”也可以(第三行。这是因为Java 程序支持将斜线“/”当成平台无关的路径分隔符)

文件输出

先看代码:

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

public class Test {
    // 如果用一个无法创建的文件名构造PrintWriter,可能会产生 I/O 异常
    // 为了简单起见,只要在方法头中声明 throws Exception 即可
    public static void main(String[] args) throws IOException {
        // File 类是一个代表文件或目录的类,通常使用路径来初始化,允许使用绝对路径和相对路径
        // 这里我们使用相对路径
        File outfile = new File("JayChou.txt");

        // 检查scores.txt是否存在,如果存在退出程序
        // 如果想实现重写覆盖,把这段注释掉就可以了
        if (outfile.exists()) {
            System.out.println("File already exists.");
            System.exit(1);
        }

        // 如果不存在则写文件
        // 为了避免一些乱码问题,我们制定编码方式为 UTF-8
        PrintWriter out = new PrintWriter(outfile, "UTF-8");
        out.print("Jay chou ");
        out.println("is a pop music star.");
        out.println("稻香");
        out.println("夜曲");
        out.println("青花瓷");

        // 释放资源
        out.close();
    }
}

可以看到确实多出来一个JayChou.txt,而且打开这个txt文件发现并不存在乱码。
在这里插入图片描述

在这里插入图片描述
关于编码这里我多说几句,一开始我写的是PrintWriter out = new PrintWriter(outfile);并没有加第二个参数 “UTF-8”,然后打开txt文件后发现是乱码。
出现乱码的原因是操作系统和Java程序使用的编码格式不同。中文Windows OS默认使用的是GBK编码,而IDE默认使用的是UTF-8编码。在Java中写入的汉字用的是IDE默认的UTF-8编码,而用txt去看则用的是操作系统默认的GBK编码,二者编码方式不一致所以会出现乱码。为了避免可能的中文乱码问题,最好在读写文件的时候显式指定编码格式,我们一般指定为UTF-8。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java是一种面向对象的编程语言,它提供了很多内置的输入输出库。下面两段代码分别演示了Java中如何进行文件输入和输出文件输入: ``` import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class FileInput { public static void main(String[] args) { try { File file = new File("input.txt"); Scanner scanner = new Scanner(file); while (scanner.hasNextLine()) { String line = scanner.nextLine(); System.out.println(line); } scanner.close(); } catch (FileNotFoundException e) { System.out.println("文件不存在"); } } } ``` 文件输出: ``` import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; public class FileOutput { public static void main(String[] args) { try { File file = new File("output.txt"); PrintWriter writer = new PrintWriter(file); writer.println("Hello World!"); writer.close(); } catch (FileNotFoundException e) { System.out.println("文件不存在"); } } } ``` 以上代码中,文件输入使用了Scanner类,其构造参数为一个File对象,表示要读取的文件。然后使用while循环读取文件中每一行的内容,直到文件结束。最后记得关闭Scanner对象。 文件输出使用了PrintWriter类,其构造参数同样为一个File对象,表示要写入的文件。然后使用println方法向文件写入内容。最后记得关闭PrintWriter对象。 以上是Java文件输入输出代码的基本格式,当然,在实际开发中还会涉及到更多的细节问题,比如文件编码、文件路径、读写异常处理等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值