Java文件读写详解。 附txt乱码问题, html乱码问题

先看代码

 1 public class FileReader {
 2     public static String readFile(String fileName) {
 3         String fileContent = "";
 4         try {
 5             File f = new File(fileName);
 6             if (f.isFile() && f.exists()) {
 7                 InputStreamReader read = new InputStreamReader(
 8                         new FileInputStream(f), "gbk");
 9                 BufferedReader reader = new BufferedReader(read);
10                 String line;
11                 while ((line = reader.readLine()) != null) {
12                     fileContent += line;
13                 }
14                 read.close();
15             }
16         } catch (Exception e) {
17             e.printStackTrace();
18         }
19         return fileContent;
20     }
21 }

这里有几个比较重要的对象

File    定义文件路径

InputStreamReader    File与BufferReader的桥梁

BufferReader             内存数据与InputStreamReader的桥梁

简单来说就是File先给出了文件路径

之后通过InputStreamReader将文件读取到内存块中,但是此时离真正可用的内存数据还有一步,需要借用BufferReader的readline方法

于是将InputStreamReader与BufferReader绑定,则可以新的BufferReader对象将数据写入到内存中

同理于写文件

 1 public class FileWriter {
 2     public static void writeFile(String fileName, String fileContent) {
 3         try {
 4             File f = new File(fileName);
 5             if (!f.exists()) {
 6                 f.createNewFile();
 7             }
 8             OutputStreamWriter write = new OutputStreamWriter(
 9                     new FileOutputStream(f), "gbk");
10             BufferedWriter writer = new BufferedWriter(write);
11             writer.write(fileContent);
12             writer.close();
13         } catch (Exception e) {
14             e.printStackTrace();
15         }
16 
17     }
18 }

此外有时我们会遇到读取的文件是乱码的情况

这是因为所选择的编码方式于文件的编码格式不符合,如此只要修改InputStreamReader中的编码参数就可以了

当我们写一个html文件时,有时也会出现乱码的问题

虽然我们写入时并非乱码,但用html打开时就是乱码,这个问题的原因是html通常用utf-8来打开,如果用gbk或其他格式保存,则以html格式打开时会显示乱码

以上

原文地址:https://www.cnblogs.com/Raymond-Yang/p/4253768.html