Java文件读写操作指定编码方式防乱码

读文件:BufferedReader

从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

BufferedReader in
   = new BufferedReader(new FileReader("foo.in"));
 将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。 
可以对使用 DataInputStream 进行按原文输入的程序进行本地化,方法是用合适的 BufferedReader 替换每个 DataInputStream。

为了指定文件的编码方式,再进入如下修改:
//BufferedReader in = new BufferedReader(new FileReader(saveFilename));
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(saveFilename),"GB2312"));

写文件:BufferedWriter

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 (‘\n‘) 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

通常 Writer 将其输出立即发送到基础字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

PrintWriter out
   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
 将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。

为了指定文件的编码方式:
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFilename),"GB2312")));

=======================代码示例=======================

读文件:

[java] view plain copy

print?

  1. /**
  2. * 读取文件内容
  3. *
  4. * @param filePathAndName
  5. *            String 如 c:\\1.txt 绝对路径
  6. * @return boolean
  7. */
  8. public static String readFile(String filePathAndName) {
  9. String fileContent = "";
  10. try {
  11. File f = new File(filePathAndName);
  12. if(f.isFile()&&f.exists()){
  13. InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");
  14. BufferedReader reader=new BufferedReader(read);
  15. String line;
  16. while ((line = reader.readLine()) != null) {
  17. fileContent += line;
  18. }
  19. read.close();
  20. }
  21. } catch (Exception e) {
  22. System.out.println("读取文件内容操作出错");
  23. e.printStackTrace();
  24. }
  25. return fileContent;
  26. }

写文件:

[java] view plain copy

print?

    1. /**
    2. * 写入文件
    3. *
    4. * @param filePathAndName
    5. *            String 如 c:\\1.txt 绝对路径
    6. */
    7. public static void writeFile(String filePathAndName, String fileContent) {
    8. try {
    9. File f = new File(filePathAndName);
    10. if (!f.exists()) {
    11. f.createNewFile();
    12. }
    13. OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8");
    14. BufferedWriter writer=new BufferedWriter(write);
    15. Writer.write(fileContent);
    16. Writer.close();
    17. } catch (Exception e) {
    18. System.out.println("写文件内容操作出错");
    19. e.printStackTrace();
    20. }
    21. }
时间: 2024-10-16 20:49:01

Java文件读写操作指定编码方式防乱码的相关文章

java文件读写操作指定编码格式

读文件: BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高效读取. 可以指定缓冲区的大小,或者可使用默认的大小.大多数情况下,默认值就足够大了. 通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求.因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader).例如, BufferedReader in   =

java文件读写操作类

借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内容进行捕获,放在txt文本文档中 2,对各种类型数据都以字符串的形式逐行写入 3,对全局数组的内容进行写入 读操作: 获取文件行数 对逐行字符串型数据进行类型转换,放入二维数组中 为后面算法处理提供入口,但是要小心的是:不可以将行数用全局变量做计数器,否则每次读入是全局变量累加出错,应重新开始读取

java文件读写操作

Java IO系统里读写文件使用Reader和Writer两个抽象类,Reader中read()和close()方法都是抽象方法.Writer中 write(),flush()和close()方法为抽象方法.子类应该分别实现他们. Java IO已经为我们提供了三个方便的Reader的实现类,FileReader,InputStreamReader和BufferedReader.其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁.你可以在构造器重指定编码的方式,如果不

java文件读写的两种方式

今天搞了下java文件的读写,自己也总结了一下,但是不全,只有两种方式,先直接看代码: public static void main(String[] args) throws IOException { io(); buffer(); } /** * 以流的形式读写 可以使用任何文件 特别是二进制文件 * * @author hh * @date 2014-12-11 * @throws IOException */ public static void io() throws IOExce

Java文件读写操作具体代码实现

可以直接下载源文件使用:http://download.csdn.net/detail/zhanghao_hulk/8638541 package test; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.File

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 n

java文件读写操作大全

转自:http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html ———————————————————————————————————————————— 一.获得控制台用户输入的信息     public String getInputMessage() throws IOException...{         System.out.println("请输入您的命令∶");         byte buffe

【java 文件读写操作】 生成随机数,写入txt,然后从txt中读出

1.把生成的随机数写入到文件中 1 public static void WriterFun(){ 2 //获得路径 3 String filepath = System.getProperty("user.dir"); 4 filepath += "\\file.txt"; 5 6 File file = new File(filepath); 7 if(!file.exists()){ 8 try { 9 file.createNewFile(); 10 } c

Android数据存储——文件读写操作(File)

Android文件读写操作 一.文件的基本操作 Android中可以在设备本身的存储设备或外接的存储设备中创建用于保存数据的文件.在默认状态下,文件是不能在不同程序间共享的. 当用户卸载您的应用程序时,这些文件删除. 文件存储数据可以通过openFileOutput方法打开一个文件(如果这个)文件不存在就自动创建这个文件),通过load方法来获取文件中的 数据,通过deleteFile方法删除一个指定的文件. 1,常用方法介绍: File是通过FileInputStream和FileOutput