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格式打开时会显示乱码
以上