Java数据操作流DataOutputStream输出txt文件乱码,怎么解决

package org.dhj.datademo;import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream;public class DataOutputStreamDemo { public static void main(String[] args) throws Exception{ DataOutputStream dos = null; //声明数据输出流对象 File f = new File("D:" + File.separator + "order.txt");//指定文件的保存路径 dos = new DataOutputStream(new FileOutputStream(f));//实例化数据输出流对象 String names[] = {"衬衣","手套","围巾"};//商品名称 float prices[] = {98.3f,30.3f,50.5f}; //商品价格 int nums[] = {3,2,1}; //商品数量 for(int i = 0;i<names.length;i++){ //循环写入 dos.writeChars(names[i]); //写入字符串 dos.writeChar('\t'); //加入分隔符 dos.writeFloat(prices[i]); //写入小数 dos.writeChar('\t'); //加入分隔符 dos.writeInt(nums[i]); //写入整数 dos.writeChar('\n'); //换行 } dos.close(); //关闭输出流 }}

中文乱码解决方案:代码如下,请参照
public class TestStream {
public static void main(String[] args) throws Exception{
DataOutputStream dos = null; //声明数据输出流对象
File f = new File("D:" + File.separator + "order.txt");//指定文件的保存路径
OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(f), "utf-8");
dos = new DataOutputStream(new FileOutputStream(f));//实例化数据输出流对象
String names[] = {"衬衣","手套","围巾"};//商品名称
float prices[] = {98.3f,30.3f,50.5f}; //商品价格
int nums[] = {3,2,1}; //商品数量
for(int i = 0;i<names.length;i++){
/*//循环写入
dos.writeChar(names[i]); //写入字符串
dos.writeChar('\t'); //加入分隔符
dos.writeFloat(prices[i]); //写入小数
dos.writeChar('\t'); //加入分隔符
dos.writeInt(nums[i]); //写入整数
dos.writeChar('\n'); //换行
*/
oStreamWriter.write(names[i]);
oStreamWriter.write('\t');
oStreamWriter.write(prices[i]+""); //写入小数
oStreamWriter.write('\t'); //加入分隔符
oStreamWriter.write(nums[i]); //写入整数
oStreamWriter.write('\n'); //换行
}
oStreamWriter.close(); //关闭输出流
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-23
你的编码是utf-8吗追问

额,不知道在哪看编码,百度上都是用代码设置

追答

格式

追问

追答

改成utf8

追问

改了,但是输出的内容很多都变问号了