0 0

写入文件为什么是乱码?5

import java.io.*;
public class Test {
public static void main(String args[]){
try {
FileReader f=new FileReader( "E:\\test.txt ");
BufferedReader   in=new   BufferedReader(f);
String   s=null;
int   i=0;
while   ((s=in.readLine())!=null){
FileOutputStream out1 = new FileOutputStream( "E:\\copytest.txt ");
BufferedOutputStream out2 = new BufferedOutputStream(out1,1);
DataOutputStream out = new DataOutputStream(out2);
out.writeUTF(s);
System.out.print(i+1+ "   ");
System.out.println(s);
i++;
}
}catch(Exception e){
e.printStackTrace();
}

}
}
E:\\copytest.txt 写入到这里的字符串是乱码?
另外要关那个流?
OO 
2008年11月27日 21:13

3个答案 按时间排序 按投票排序

0 0

采纳的答案

1、兄弟,你这样写是不对的

while ((s=in.readLine())!=null){ 
FileOutputStream out1 = new FileOutputStream("E:\\copytest.txt"); 
BufferedOutputStream out2 = new BufferedOutputStream(out1,1); 
DataOutputStream out = new DataOutputStream(out2); 
...
} 

每次进循环都将copytest.txt文件清空了new FileOutputStream("E:\\copytest.txt");
应该把while里面前三行放在循环外面

2、关闭流一般是从后往前关, 可以关的都关了最好, 顺序如out>out2>out1

3、一般DataOutputStream是用于读取DataInputStream写进的文件

4、另外,我用你的程序倒不会出现乱码

5、一般的用法是,效率高,不会有乱码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TestCopyFile {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		BufferedReader br = null;
		BufferedWriter bw = null;

		try {
			fis = new FileInputStream("E:/test.txt");
			fos = new FileOutputStream("E:/copytest.txt");
			br = new BufferedReader(new InputStreamReader(fis));
			bw = new BufferedWriter(new OutputStreamWriter(fos));

			String str;
			while ((str = br.readLine()) != null) {
				bw.write(str);
				bw.newLine();
			}
		} catch (Exception e) {
			System.out.println(e);
		} finally { // 从最后使用的关闭到最先使用的
			if (bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					bw = null;
				}
			}
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					br = null;
				}
			}
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					fos = null;
				}
			}
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
					fis = null;
				}
			}
		}
	}
}

2008年11月28日 00:11
0 0

1、Java语言中按照基本数据类型进行读/写的是: DataInputStream和DataOutputStream类,这两个类的对象是过滤流。将基本字节输入/输出流,自动转成基本数据类型进行读/写的过滤流。

2、给个例子

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author zhanjia
 *
 */
public class DataInputStreamTest1 {
	
	public static void main(String[] args) {
		DataInputStream dis = null;
		DataOutputStream dos = null;
		int v = 0;
		float f = 0;
		
		try {
			// 写入数据
			dos = new DataOutputStream(new FileOutputStream("E:/test.txt"));
			for (int k = 1; k <=5; k++) {
				dos.writeInt(k);
			}
			dos.writeFloat(1);
			dos.close();
			
			// 读出数据
			dis = new DataInputStream(new FileInputStream("E:/test.txt"));
			for (int k = 1; k <=5; k++) {
				v = dis.readInt();
				System.out.println(v + " ");
			}
			
			try {
				while (true) {
					f = dis.readFloat();
					System.out.println(f + " ");
				}
			} catch (EOFException e) {
			}
			dis.close();
		} catch (Exception e) {
			
		} finally {
			try {
				dos.close();
			} catch (IOException e) {
				dos = null;
			}
			try {
				dis.close();
			} catch (IOException e) {
				dis = null;
			}
		}
	}

}


3、由于是按基本类型进行读写,所以如上面例子,int占4个字节,因而写到文件里面自然为乱码。所以它的读取是有规定的,怎样写就要怎样写,否则会出乱子。
    读取内容没问题,查看文件有乱码是正常的

2008年11月28日 00:29
0 0

import java.io.*;

public class Test { 

	public static void main(String args[]){ 
		try {
			BufferedReader br = new BufferedReader(new FileReader("E:\\test.txt"));
			String s = null; 

			PrintWriter pw = new PrintWriter(new FileOutputStream("E:\\copytest.txt"));
			int i = 0;
			while ((s=br.readLine())!=null){ 
				pw.println(s);
				System.out.print(i+1+ "   "); 
				System.out.println(s); 
				i++; 
			}
			pw.close();
			br.close();
		}catch(Exception e){ 
			e.printStackTrace(); 
		}
	} 
}

这样试一下,关流的话关最外层就可以了

2008年11月27日 22:25

相关推荐

    c++ 读写txt文件和乱码问题解决

    这段代码创建了一个`ifstream`对象,尝试打开名为"example.txt"的文件,然后逐行读取内容并打印到控制台。如果文件未能成功打开,程序会输出错误信息。 接下来,我们讨论如何写入TXT文件。同样,可以使用`ofstream`...

    jsoncpp 写入乱码解决版本

    在JSONCPP中,可能会遇到写入文件时出现乱码的问题,这通常是由于编码不兼容或者字符集设置不当导致的。 在C++编程中,乱码问题通常涉及到字符编码,如ASCII、UTF-8、GBK等。JSON数据通常以UTF-8编码存储,因为它能...

    java读写csv文件,中文乱码问题

    - 使用`PrintWriter`或者`BufferedWriter`可以指定字符编码写入文件。例如: ```java FileOutputStream fos = new FileOutputStream("path_to_file.csv"); OutputStreamWriter osw = new OutputStreamWriter(fos...

    解决Labview中关于读取txt文本文件,读出来是乱码的问题

    解决Labview中关于读取txt文本文件,读出来是乱码的问题

    Java生成pdf文件,解决中文乱码问题.pdf

    Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    然而,在Java中读取和写入csv文件时,中文字符如果不正确地处理,可能会出现乱码的情况。下面我们将详细介绍Java避免UTF-8的csv文件打开中文出现乱码的方法。 首先,需要了解UTF-8和UTF-16LE这两种编码格式。UTF-8...

    PB9写入非中文数据库的乱码问题

    在使用PowerBuilder 9(PB9)开发应用程序时,可能会遇到一个特定问题,即当向非中文数据库(如SQL Server)插入中文字符时,数据在第三方软件中显示为乱码。这个问题主要是由于PB9对Unicode支持不足导致的。本文提供...

    java读写文件避免中文乱码.docx

    为了避免中文乱码,需要使用正确的编码方式来读取和写入文件。 读取文件避免中文乱码 在读取文件时,需要使用正确的编码方式来解析文件内容。Java 提供了多种方式来读取文件,例如使用 `FileInputStream`、`...

    文件下载,二进制流转换成文件 解决中文名乱码的问题

    本文将深入探讨如何通过二进制流转换为文件来实现文件下载,并着重讲解如何解决中文文件名出现的乱码问题。 ### 文件下载原理 在Web应用中,文件下载通常涉及客户端(浏览器)与服务器端之间的数据传输。当用户...

    ZipUtil文件压缩工具类(解决中文乱码)

    `ZipUtil`是一个专门用于文件压缩的工具类,它解决了在处理包含中文字符的文件或目录时可能出现的乱码问题。`ZipEntry`是Java标准库`java.util.zip`包中的核心类,用于表示ZIP文件中的一个条目,它可以是文件或目录...

    解决adb传输中文出现乱码的最新版adb.exe文件

    然而,在处理包含中文字符的文件时,adb可能会出现乱码问题,尤其是在Windows系统上,由于Windows默认采用GBK编码,而Android系统通常使用UTF-8编码,这种编码不匹配就会导致中文乱码。 标题提到的"解决adb传输中文...

    Java读取、写入文件如何解决乱码问题

    在Java中,读取和写入文件时遇到的乱码问题通常源于编码格式不匹配。文件可能使用了特定的字符编码(例如UTF-8、GBK等),而Java程序在处理这些文件时没有正确识别或指定这个编码,从而导致乱码。解决这个问题的关键...

    Android读取本地json文件的方法(解决显示乱码问题)

    以下将详细讲解如何在Android中读取本地JSON文件,并解决可能出现的显示乱码问题。 1. **读取本地JSON文件(但显示汉字乱码)** 这个问题通常发生在读取文件时没有正确指定字符编码。在Android中,我们通常使用`...

    彻底解决JAVA读取写入中文乱码的问题

    3. **指定编码写入文件**:同样,写入文件时也需要指定编码。可以使用`BufferedWriter`和`OutputStreamWriter`组合,如下: ```java FileOutputStream fos = new FileOutputStream("output.txt"); ...

    ZipOutputStream 压缩文件以及乱码问题解决方案

    在IT行业中,文件压缩是一种常见的数据存储和传输方式,ZipOutputStream是Java标准库中的一个类,用于将数据流写入ZIP格式的压缩文件。本文将深入探讨如何使用ZipOutputStream进行文件压缩,并解决可能出现的乱码...

    java压缩zip文件解决中文乱码问题

    在写入文件内容时,我们确保了使用缓冲流以提高效率。 在描述中提到的“内置类与jar包”,这可能是指在Java项目中使用第三方库如Apache Ant(ant.jar)来处理压缩任务。Ant是一个强大的构建工具,它包含了处理文件...

    C#的ini文件操作,解决网上未解决的Get或Set中文乱码问题

    本资源参考网上原版为存取英文字符的ini操作,未考虑中文乱码问题。而网上另外也有资料如何处理中文编码,例如转码为utf-8,存能解决乱码,取又出现问题。本资源我重新整理,用unicode完美解决中文乱码问题。用法: ...

    彻底解决JAVA读取写入 TXT中文乱码问题 源码

    在Java编程中,读取和写入TXT文件时,经常遇到中文乱码的问题。这是因为Java默认的字符编码可能与TXT文件的实际编码不一致,导致字符无法正确解析。本篇文章将深入探讨这个问题,并提供完整的源码解决方案。 首先,...

    Java实现文件下载并解决中文文件名乱码

    ### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...

Global site tag (gtag.js) - Google Analytics