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

以上

时间: 2024-10-13 17:19:19

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

C++文件读写详解(ofstream,ifstream,fstream)

c++bufferiosiostreamfilestream 目录(?)[+] 在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: [java] view plaincopyprint? #include <fstream> ofstream         //文件写操作 内存写入存储设备 ifstream         //文件读操作,存储设

Java 序列化Serializable详解(附详细例子)

Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.   2.什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候: 3.如何实现序列化 将需要序列化的类实现Serializable接口就可以了,Seriali

C++文件读写详解

转自:http://blog.csdn.net/kingstar158/article/details/6859379 在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: 1 #include <fstream> 2 2.ofstream //文件写操作 内存写入存储设备 3 3.ifstream //文件读操作,存储设备读区到内存中 4 4.fs

python文件读写详解

# Python3 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 文件打开模式     描述 r              以只读模式打开文件,并将文件指针指向文件头:如果文件不存在会报错 w             以只写模式打开文件,并将文件指针指向文件头:如果文件存在则将其内容清空,如果文件不存在则创建 a           

【转】C++文件读写详解(ofstream,ifstream,fstream)

转:http://blog.csdn.net/kingstar158/article/details/6859379 摘要:具体用法,上面链接中,文章写的很详细,讲解ofstream,ifstream,fstream,很清楚.

Java路径操作详解

1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://www.sun.com/index.htm也代表了一个 URL绝对路径. 相对路径:相对与某个基准目录的路径.包含Web的相对路径(HTML中的相对目录),例如:在 Servlet中,"/"代表Web应用的根目录.和物理路径的相对表示.例如:". /" 代表当前目录, &q

Java开发之I/O读取文件实例详解

在java开发或者android开发中,读取文件是不可避免的,以下对java开发中读取文件做了归纳和详解: 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fileName) { File file = new File(fileN

Java 序列化Serializable详解(附详细例子)

1.什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程. 2.什么情况下需要序列化  a)当你想把的内存中的对象保存到一个文件中或者数据库中时候: b)当你想用套接字在网络上传送对象的时候: c)当你想通过RMI传输对象的时候: 3.如何实现序列化 将需要序列化的类实现Serializable接口就可以了,Serializable接口中没有任何方法,可以理解为一个标记,即表明

磁盘及文件系统管理详解---急需加强

磁盘管理: 机械式硬盘 U盘.光盘.软盘.硬件.磁带 MBR:Master Boot Record 主引导记录 ln [-s -v] SRC DEST:创建链接文件,默认硬链接 -s:创建软连接 -v:显示过程 硬链接: 1.只能对文件创建,不能应用于目录 2.不能跨文件系统 3.创建硬链接会增加文件被链接的次数 符号链接(软连接): 1.可以应用于目录 2.可以跨文件系统 3.不会增加被链接文件的链接次数 4.其大小为指定的路径所包含的字符个数 du -s -h df:显示整个磁盘分区使用情况