Java中可以使用readUTF()方法从.txt文件中读取字符串吗?

java.io.DataOutputStreamreadUTF()方法将经过修改的UTF-8编码的数据读取到String中并返回。

示例

下面的Java程序使用readUTF()方法从.txt文件中读取UTF-8文本。

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
public class UTF8Example {
   public static void main(String args[]) {
      StringBuffer buffer = new StringBuffer();
      try {
         //实例化FileInputStream类
         FileInputStream fileIn = new FileInputStream("D:\\test.txt");
         //实例化DataInputStream类
         DataInputStream inputStream = new DataInputStream(fileIn);
         //从DataInputStream读取UTF数据
         while(inputStream.available()>0) {
            buffer.append(inputStream.readUTF());
         }
      }
      catch(EOFException ex) {
         System.out.println(ex.toString());
      }
      catch(IOException ex) {
         System.out.println(ex.toString());
      }
      System.out.println("文件的内容: "+buffer.toString());
   }
}

输出结果

文件的内容: 基本的な教育ネットワークへようこそ。

使用readUTF()方法读取普通文本

使用readUTF()方法从文件读取文本时,如果文件的内容不是无效的UTF格式,则此方法将生成EOFException。

示例

在下面的Java程序中,我们使用BufferedWriter将普通文本写入文件,并尝试使用readUTF()方法读取文本。这将生成EOFException。

import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
import java.io.FileWriter;
public class ReadingTextUsingUTF {
   public static void main(String args[]) {
      FileWriter fileOut = null;
      BufferedWriter bufferedWriter = null;
      FileInputStream fileIn = null;
      DataInputStream inputStream = null;
      Scanner sc = new Scanner(System.in);
      try {
         //实例化FileOutputStream类
         fileOut = new FileWriter("D:\\utfText.txt");
         //实例化DataOutputStream类
         bufferedWriter = new BufferedWriter(fileOut);
         //将UTF数据写入输出流
         System.out.println("输入示例文本(单行)");
         bufferedWriter.write(sc.nextLine());
         bufferedWriter.flush();
         System.out.println("插入到文件中的数据");
         bufferedWriter.close();
         fileOut.close();
         //实例化FileInputStream类
         fileIn = new FileInputStream("D:\\utfText.txt");
         //实例化DataInputStream类
         inputStream = new DataInputStream(fileIn);
         //从DataInputStream读取UTF数据
         while(inputStream.available()>0) {
            System.out.println(inputStream.readUTF());
         }
         inputStream.close();
         fileIn.close();
      }
      catch(EOFException ex) {
         System.out.println("内容不是有效的UTF-8格式");
      }
      catch(IOException ex) {
         System.out.println(ex.toString());
      }
   }
}

输出结果

输入示例文本(单行)
Hello how are you]
插入到文件中的数据
内容不是有效的UTF-8格式