-
写入文件为什么是乱码?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 写入到这里的字符串是乱码?
另外要关那个流?2008年11月27日 21:13
3个答案 按时间排序 按投票排序
-
采纳的答案
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
-
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
-
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
相关推荐
这段代码创建了一个`ifstream`对象,尝试打开名为"example.txt"的文件,然后逐行读取内容并打印到控制台。如果文件未能成功打开,程序会输出错误信息。 接下来,我们讨论如何写入TXT文件。同样,可以使用`ofstream`...
在JSONCPP中,可能会遇到写入文件时出现乱码的问题,这通常是由于编码不兼容或者字符集设置不当导致的。 在C++编程中,乱码问题通常涉及到字符编码,如ASCII、UTF-8、GBK等。JSON数据通常以UTF-8编码存储,因为它能...
- 使用`PrintWriter`或者`BufferedWriter`可以指定字符编码写入文件。例如: ```java FileOutputStream fos = new FileOutputStream("path_to_file.csv"); OutputStreamWriter osw = new OutputStreamWriter(fos...
解决Labview中关于读取txt文本文件,读出来是乱码的问题
Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...
然而,在Java中读取和写入csv文件时,中文字符如果不正确地处理,可能会出现乱码的情况。下面我们将详细介绍Java避免UTF-8的csv文件打开中文出现乱码的方法。 首先,需要了解UTF-8和UTF-16LE这两种编码格式。UTF-8...
在使用PowerBuilder 9(PB9)开发应用程序时,可能会遇到一个特定问题,即当向非中文数据库(如SQL Server)插入中文字符时,数据在第三方软件中显示为乱码。这个问题主要是由于PB9对Unicode支持不足导致的。本文提供...
为了避免中文乱码,需要使用正确的编码方式来读取和写入文件。 读取文件避免中文乱码 在读取文件时,需要使用正确的编码方式来解析文件内容。Java 提供了多种方式来读取文件,例如使用 `FileInputStream`、`...
本文将深入探讨如何通过二进制流转换为文件来实现文件下载,并着重讲解如何解决中文文件名出现的乱码问题。 ### 文件下载原理 在Web应用中,文件下载通常涉及客户端(浏览器)与服务器端之间的数据传输。当用户...
`ZipUtil`是一个专门用于文件压缩的工具类,它解决了在处理包含中文字符的文件或目录时可能出现的乱码问题。`ZipEntry`是Java标准库`java.util.zip`包中的核心类,用于表示ZIP文件中的一个条目,它可以是文件或目录...
然而,在处理包含中文字符的文件时,adb可能会出现乱码问题,尤其是在Windows系统上,由于Windows默认采用GBK编码,而Android系统通常使用UTF-8编码,这种编码不匹配就会导致中文乱码。 标题提到的"解决adb传输中文...
在Java中,读取和写入文件时遇到的乱码问题通常源于编码格式不匹配。文件可能使用了特定的字符编码(例如UTF-8、GBK等),而Java程序在处理这些文件时没有正确识别或指定这个编码,从而导致乱码。解决这个问题的关键...
以下将详细讲解如何在Android中读取本地JSON文件,并解决可能出现的显示乱码问题。 1. **读取本地JSON文件(但显示汉字乱码)** 这个问题通常发生在读取文件时没有正确指定字符编码。在Android中,我们通常使用`...
3. **指定编码写入文件**:同样,写入文件时也需要指定编码。可以使用`BufferedWriter`和`OutputStreamWriter`组合,如下: ```java FileOutputStream fos = new FileOutputStream("output.txt"); ...
在IT行业中,文件压缩是一种常见的数据存储和传输方式,ZipOutputStream是Java标准库中的一个类,用于将数据流写入ZIP格式的压缩文件。本文将深入探讨如何使用ZipOutputStream进行文件压缩,并解决可能出现的乱码...
在写入文件内容时,我们确保了使用缓冲流以提高效率。 在描述中提到的“内置类与jar包”,这可能是指在Java项目中使用第三方库如Apache Ant(ant.jar)来处理压缩任务。Ant是一个强大的构建工具,它包含了处理文件...
本资源参考网上原版为存取英文字符的ini操作,未考虑中文乱码问题。而网上另外也有资料如何处理中文编码,例如转码为utf-8,存能解决乱码,取又出现问题。本资源我重新整理,用unicode完美解决中文乱码问题。用法: ...
在Java编程中,读取和写入TXT文件时,经常遇到中文乱码的问题。这是因为Java默认的字符编码可能与TXT文件的实际编码不一致,导致字符无法正确解析。本篇文章将深入探讨这个问题,并提供完整的源码解决方案。 首先,...
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...