这两天用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。
分享到:
相关推荐
Java的IO流系统提供了丰富的功能,包括各种类型的流、缓冲、字符集转换、对象序列化等。理解并熟练运用这些概念,可以帮助开发者高效地处理数据输入输出,无论是文件操作还是网络通信,都能得心应手。通过阅读《IO...
Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...
Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,因为它提供了处理输入(读取)和输出(写入)的机制,无论是从键盘、文件、网络还是其他数据源。在本文中,...
Java IO流是Java平台中处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、设备、网络连接)进行交互。IO流系统由多个类和接口组成,它们位于java.io包中,为开发者提供了读写数据的丰富功能。在Java中,...
总结,Java IO流系统是一个庞大的框架,覆盖了从基础的文件操作到复杂的网络通信。理解并熟练掌握这一部分知识对于任何Java开发者来说都至关重要。通过这些笔记,你可以逐步了解并运用Java IO流,提升你的编程能力。
- **引入原因**:在Java中,为了能够方便地与外部设备(如硬盘、网络等)进行数据交互,设计了一套标准的输入输出处理机制,即IO流。这使得程序能够更加灵活地处理各种类型的数据。 #### 二、Java IO流对象及其特性...
这篇详细的总结将围绕Java IO体系结构、核心类、流的概念、缓冲区、转换流、字符集、文件操作、对象序列化以及NIO(非阻塞IO)等多个方面进行展开。 一、Java IO体系结构 Java IO体系是Java平台中用于处理数据输入...
本篇总结主要围绕Java IO流的基础概念、分类以及常用方法展开。 首先,Java IO流按照数据流动的方向可分为输入流(Input Stream)和输出流(Output Stream)。输入流负责从源(如文件、网络连接)读取数据,而输出...
总之,Java IO流是处理输入输出的核心工具,理解字节流与字符流的区别、流的层次结构以及基本操作方法,对于进行文件读写、网络通信等任务至关重要。在实际编程中,合理选择和组合不同的流类,可以实现灵活高效的IO...
Java IO流是Java平台中...总结,Java IO流是Java平台中处理输入输出的基础,其丰富的类库和设计模式为开发者提供了灵活、高效的数据传输手段。通过深入理解和熟练运用这些知识点,能够更好地应对各种IO相关的编程挑战。
总结,Java IO流涉及的概念广泛,包括流的基本概念、分类、核心类的使用以及实际操作中的模式选择和编码处理。掌握这些知识点不仅能帮助开发者完成基本的文件操作,也是面试中经常被问到的领域,对于提升职业竞争力...
总结,Java IO流是一个强大而全面的框架,它提供了多种类型的流以适应不同的输入输出需求。理解并熟练掌握Java IO流,对于进行高效、可靠的程序开发至关重要。在实际应用中,根据具体需求选择合适的流类型,利用缓冲...
Java IO流是Java编程语言中处理输入输出的重要机制,它允许程序与外部设备(如硬盘、内存、网络等)之间交换数据。2022年的Java IO流学习总结主要涵盖以下核心知识点: 1. **流的概念**:流是数据传输的抽象概念,...
Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`提供了一系列基于流的I/O操作接口与实现类,而`java.nio`则提供了更高效的数据访问方式,如通道和缓冲区等。 Java IO系统的设计原则之...
它们都接受一个InputStream或OutputStream作为参数,然后根据指定的字符集进行转换。 ```java import java.io.*; public class ConvertStreamDemo { public static void main(String[] args) throws IOException ...
Java的IO流是Java平台中用于输入输出操作的重要部分,它提供了一种高效且灵活的方式来处理数据传输。本文将深入探讨Java的IO流,包括其概念、分类、常用类和对象,以及它们在实际编程中的应用。 首先,流是Java中...
总结来说,Java IO流提供了丰富的类和接口,可以处理各种数据传输需求,无论是简单的文件读写,还是复杂的网络通信,都可以找到相应的流类来实现。理解并熟练掌握Java IO流的使用,对于Java开发者来说至关重要。
Java IO即Java输入输出,是Java语言中处理输入输出流的基础技术。Java NIO是Java Non-Blocking IO的缩写,指的是Java的新I/O API。Java NIO在Java1.4版中引入,其目的是为了提高I/O操作的性能。本书作者Ron Hitchens...
Java的IO流是程序与外部数据源之间传输数据的抽象方式,它允许开发者处理各种类型的数据,包括文件、内存、网络连接等。Java的IO流分为两大类:字节流和字符流。字节流处理单个字节的数据,而字符流则处理字符编码,...
在Java编程语言中,IO流(Input/Output流)是用来处理数据输入与输出的重要工具。在文本文件的复制过程中,通常会用到三种主要的流类型:字节流(Byte Stream)、字符流(Character Stream)以及缓冲流(Buffered ...