Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - 读取文件



在 Java 中读取文件

我们可以使用多种方法在 Java 中读取文件。以下是三种在 Java 中创建文件的流行方法:

  • 使用 FileInputStream() 构造函数

  • 使用 FileReader.read() 方法

  • 使用 Files.readAllLines() 方法

让我们看看在 Java 中读取文件的每种方法。

使用 FileInputStream() 构造函数读取文件

FileInputStream 用于从文件读取数据。可以使用关键字 new 创建对象,并且有几种类型的构造函数可用。

语法

以下 构造函数 以字符串形式获取文件名以创建输入流对象以读取文件:

InputStream f = new FileInputStream("C:/java/hello.txt");

语法

以下构造函数获取文件对象以创建输入流对象以读取文件。首先,我们使用 File() 方法创建文件对象,如下所示:

File f = new File("C:/java/hello.txt");
InputStream f = new FileInputStream(f);

示例:使用 FileInputStream() 构造函数读取文件

以下示例演示了使用 FileInputStream 从当前目录读取文件:

package com.tutorialspoint;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileTest {
   public static void main(String args[]) {
      try {
         byte bWrite [] = {65, 66, 67, 68, 69};
         OutputStream os = new FileOutputStream("test.txt");
         for(int x = 0; x < bWrite.length ; x++) {
            os.write( bWrite[x] );   // writes the bytes
         }
         os.close();
     
         InputStream is = new FileInputStream("test.txt");
         int size = is.available();

         for(int i = 0; i < size; i++) {
            System.out.print((char)is.read() + "  ");
         }
         is.close();
      } catch (IOException e) {
         System.out.print("Exception");
      }	
   }
}

以上代码将创建文件 test.txt 并以二进制格式写入给定的数字。将使用 FileInputStream 读取相同的内容,并在标准输出屏幕上打印输出。

输出

A  B  C  D  E  

使用 FileReader.read() 方法读取文件

FileReader 类 的 FileReader.read() 方法允许从文件读取字符,如下所示:

语法

// get an existing file
File file = new File("d://test//testFile1.txt");

// read content
FileReader reader = new FileReader(file);

int c;
while ((c = reader.read()) != -1) {
   char ch = (char) c;
   System.out.print(ch);
}

示例:使用 FileReader.read() 方法读取文件

以下示例演示了使用 FileReader.read() 方法从给定目录读取文件的文件:

package com.tutorialspoint;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileTest {
   public static void main(String args[]) {
      try {
         File file = new File("d://test//testFile1.txt");

         //Create the file
         if (file.createNewFile()) {
            System.out.println("File is created!");
         } else {
            System.out.println("File already exists.");
         } 

         // Write Content
         FileWriter writer = new FileWriter(file);
         writer.write("Test data");
         writer.close();


         // read content
         FileReader reader = new FileReader(file);

         int c;
         while ((c = reader.read()) != -1) {
            char ch = (char) c;
            System.out.print(ch);
         }
      } catch (IOException e) {
         System.out.print("Exception");
      }	
   }
}

以上代码将创建文件 test.txt 并以文本格式写入给定的字符串。这将是标准输出屏幕上的输出。

输出

File is created!
Test data

使用 Files.readAllLines() 方法读取文件

Files.readAllLines() 是一种较新的方法,用于将文件的所有内容作为字符串列表读取,如下所示:

语法

List<String> content = Files.readAllLines(Paths.get("d://test/testFile3.txt"));

示例:使用 Files.readAllLines() 方法读取文件

以下示例演示了使用 readAllLines() 方法从给定目录读取文件的文件:

package com.tutorialspoint;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.List;

public class FileTest {
   public static void main(String args[]) {
      try {
    	  String data = "Test data";
          Files.write(Paths.get("d://test/testFile3.txt"), data.getBytes());
          List<String> lines = Arrays.asList("1st line", "2nd line");
          Files.write(Paths.get(
             "file6.txt"), lines, StandardCharsets.UTF_8, 
             StandardOpenOption.CREATE, StandardOpenOption.APPEND);
          
          List<String> content = Files.readAllLines(Paths.get("d://test/testFile3.txt"));

          System.out.println(content);
          
          content = Files.readAllLines(Paths.get("file6.txt"));

          System.out.println(content);
      } catch (IOException e) {
         System.out.print("Exception");
      }	
   }
}

以上代码将创建文件 test.txt 并以文本格式写入给定的字符串。这将是标准输出屏幕上的输出。

输出

[Test data]
[1st line, 2nd line]
广告