`
eric.song
  • 浏览: 12318 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于javaIO流与字符集的问题总结

    博客分类:
  • java
阅读更多

      这两天用java写了一个小的脚本,以方便工作使用。但是面对中文字符时总是出现乱码问题。以下是我处理程序的片段代码:

      BufferedWriter bw=null;
    try {
   //创建目录
   File fileDir=new File(cp.getCsv_path());
   if(!fileDir.exists()){
    if(fileDir.mkdirs()){
     //创建文件
     File csvfile=new File(csvpath);
     if(!csvfile.exists()){
      if(!csvfile.createNewFile()){
       System.out.println("create csvfile error");
      }else{
       System.out.println("create csvfile successful!!");
      }
     }
     System.out.println("create csvfileDir ok");
    }else{
     System.out.println("create csvfileDir error");
    }
   }
   bw=new BufferedWriter(new FileWriter(csvpath));
   result=co.getCVSStr()+"\n"+result;
   System.out.println("=========================================");
   System.out.println(result);

  //result.getBytes("UTF-8")将系统默认的字符集转换成UTF-8
   String utfStr=new String(result.getBytes("UTF-8"),"utf-8");

 //在javaIO流写入文件时仍旧使用系统默认的字符集写入文件。 
   bw.write(utfStr);
   bw.flush();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   try {
    bw.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

 

在代码中本以为使用红色区域的代码就可以保证写入文件的字符问UTF-8字符集的。但实际上还是采用操作系统默认的字符集写入文件。其主要的原因,是我没有对IO流进行字符集的指定,所以在流将信息写入文件的时候仍然采用的系统默认的字符集。在代码中红色区域的代码实际上是做了无用功。并没有起到真正的效果。

 

2 .采用以下方式就可以了:

 PrintWriter pw=null;
  try {
   //创建目录
   File fileDir=new File(cp.getCsv_path());
   if(!fileDir.exists()){
    if(fileDir.mkdirs()){
     //创建文件
     File csvfile=new File(csvpath);
     if(!csvfile.exists()){
      if(!csvfile.createNewFile()){
       System.out.println("create csvfile error");
      }else{
       System.out.println("create csvfile successful!!");
      }
     }
     System.out.println("create csvfileDir ok");
    }else{
     System.out.println("create csvfileDir error");
    }
   }
   pw=new PrintWriter(csvpath,"utf-8");
   result=co.getCVSStr()+"\n"+result;
   System.out.println("=========================================");
   System.out.println(result);
   pw.write(result);
   pw.flush();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   pw.close();
  }
  return result;
 }

 

使用PringWriter类在写入文件时使信息解码为字符集为UTF-8格式。具有这样功能类还有OutputStreamWriter和InputStreamWriter。

0
0
分享到:
评论

相关推荐

    Java io输入输出流及字符集

    Java的IO流系统提供了丰富的功能,包括各种类型的流、缓冲、字符集转换、对象序列化等。理解并熟练运用这些概念,可以帮助开发者高效地处理数据输入输出,无论是文件操作还是网络通信,都能得心应手。通过阅读《IO...

    Java IO流 总结

    Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...

    《JAVA_IO流学习总结》

    Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,因为它提供了处理输入(读取)和输出(写入)的机制,无论是从键盘、文件、网络还是其他数据源。在本文中,...

    Java IO流总结

    Java IO流是Java平台中处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、设备、网络连接)进行交互。IO流系统由多个类和接口组成,它们位于java.io包中,为开发者提供了读写数据的丰富功能。在Java中,...

    IO笔记.zip关于javaIO流部分的详细笔记

    总结,Java IO流系统是一个庞大的框架,覆盖了从基础的文件操作到复杂的网络通信。理解并熟练掌握这一部分知识对于任何Java开发者来说都至关重要。通过这些笔记,你可以逐步了解并运用Java IO流,提升你的编程能力。

    JAVA IO流学习文档

    - **引入原因**:在Java中,为了能够方便地与外部设备(如硬盘、网络等)进行数据交互,设计了一套标准的输入输出处理机制,即IO流。这使得程序能够更加灵活地处理各种类型的数据。 #### 二、Java IO流对象及其特性...

    java IO.chm

    这篇详细的总结将围绕Java IO体系结构、核心类、流的概念、缓冲区、转换流、字符集、文件操作、对象序列化以及NIO(非阻塞IO)等多个方面进行展开。 一、Java IO体系结构 Java IO体系是Java平台中用于处理数据输入...

    javaio流学习总结范文.doc

    本篇总结主要围绕Java IO流的基础概念、分类以及常用方法展开。 首先,Java IO流按照数据流动的方向可分为输入流(Input Stream)和输出流(Output Stream)。输入流负责从源(如文件、网络连接)读取数据,而输出...

    JavaIO流学习总结报告.doc

    总之,Java IO流是处理输入输出的核心工具,理解字节流与字符流的区别、流的层次结构以及基本操作方法,对于进行文件读写、网络通信等任务至关重要。在实际编程中,合理选择和组合不同的流类,可以实现灵活高效的IO...

    java io流学习笔记1

    Java IO流是Java平台中...总结,Java IO流是Java平台中处理输入输出的基础,其丰富的类库和设计模式为开发者提供了灵活、高效的数据传输手段。通过深入理解和熟练运用这些知识点,能够更好地应对各种IO相关的编程挑战。

    javaio流电子书整理面试必考io流帮助你入职阿里腾讯

    总结,Java IO流涉及的概念广泛,包括流的基本概念、分类、核心类的使用以及实际操作中的模式选择和编码处理。掌握这些知识点不仅能帮助开发者完成基本的文件操作,也是面试中经常被问到的领域,对于提升职业竞争力...

    java_io流讲解.docx.zip

    总结,Java IO流是一个强大而全面的框架,它提供了多种类型的流以适应不同的输入输出需求。理解并熟练掌握Java IO流,对于进行高效、可靠的程序开发至关重要。在实际应用中,根据具体需求选择合适的流类型,利用缓冲...

    2022年java io流学习总结.docx

    Java IO流是Java编程语言中处理输入输出的重要机制,它允许程序与外部设备(如硬盘、内存、网络等)之间交换数据。2022年的Java IO流学习总结主要涵盖以下核心知识点: 1. **流的概念**:流是数据传输的抽象概念,...

    Java_IO完全总结

    Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`提供了一系列基于流的I/O操作接口与实现类,而`java.nio`则提供了更高效的数据访问方式,如通道和缓冲区等。 Java IO系统的设计原则之...

    java字节流和字符流[整理].pdf

    它们都接受一个InputStream或OutputStream作为参数,然后根据指定的字符集进行转换。 ```java import java.io.*; public class ConvertStreamDemo { public static void main(String[] args) throws IOException ...

    Java之IO流学习总结

    Java的IO流是Java平台中用于输入输出操作的重要部分,它提供了一种高效且灵活的方式来处理数据传输。本文将深入探讨Java的IO流,包括其概念、分类、常用类和对象,以及它们在实际编程中的应用。 首先,流是Java中...

    java IO文档.docx

    总结来说,Java IO流提供了丰富的类和接口,可以处理各种数据传输需求,无论是简单的文件读写,还是复杂的网络通信,都可以找到相应的流类来实现。理解并熟练掌握Java IO流的使用,对于Java开发者来说至关重要。

    Java IO

    Java IO即Java输入输出,是Java语言中处理输入输出流的基础技术。Java NIO是Java Non-Blocking IO的缩写,指的是Java的新I/O API。Java NIO在Java1.4版中引入,其目的是为了提高I/O操作的性能。本书作者Ron Hitchens...

    Java之IO流学习总结.pdf

    Java的IO流是程序与外部数据源之间传输数据的抽象方式,它允许开发者处理各种类型的数据,包括文件、内存、网络连接等。Java的IO流分为两大类:字节流和字符流。字节流处理单个字节的数据,而字符流则处理字符编码,...

    IO流三种流方式的文本文件的复制

    在Java编程语言中,IO流(Input/Output流)是用来处理数据输入与输出的重要工具。在文本文件的复制过程中,通常会用到三种主要的流类型:字节流(Byte Stream)、字符流(Character Stream)以及缓冲流(Buffered ...

Global site tag (gtag.js) - Google Analytics