读书人

简体中文算几个字节啊该怎么解决

发布时间: 2012-12-14 10:33:08 作者: rapoo

简体中文算几个字节啊?
import java.io.*;
public class file4 {

public static void main(String[] args) throws Exception
{
File f=new File("d:\\filetest\\file.txt");
File f1=new File("d:\\filetest\\file2.txt");
FileInputStream fis = new FileInputStream(f);
FileOutputStream fos = new FileOutputStream(f1);
byte[] b=new byte[(int) f.length()];
fis.read(b);


for(int i=0;i<f.length();i++)
{
fos.write(b[i]);


}
fis.close();
}
}
我在file.txt里面写几个简体中文,在file2.txt里面能读进去,不报错。
我看书说FileInputStream是用来处理字节的。为什么上面的编译后能正常运行呢?
我用的是win7 32位系统,是不是跟这个有关?谢谢大家指点。
[最优解释]
你程序中不是有把字符转换成字节的么?
byte[] b=new byte[(int) f.length()];
你想想你这句话的作用是什么?
[其他解释]

引用:
import java.io.*;
public class file4 {

public static void main(String[] args) throws Exception
{
File f=new File("d:\\filetest\\file.txt");
File f1=new File("d:\\filetest\\f……

算了,帮你写一个吧,你自己研究吧:

package iotest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class CopyChineseFile {

public static void main(String[] args) {
String encodeName = System.getProperty("file.encoding");
System.out.println("当前你的OS编码是" + encodeName);

String inputFilename = "d:\\input.txt";
String outputFilename = "d:\\output.txt";
BufferedReader bin = null;
BufferedWriter bout = null;

try {
bin = new BufferedReader(new InputStreamReader(new FileInputStream(
inputFilename), encodeName));
bout = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outputFilename), encodeName));
int c = -1;
while ((c = bin.read()) != -1) {
bout.write(c);
}
bin.close();
bout.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}



[其他解释]
byte[] b=new byte[(int) f.length()];你一次读整个文件的大小,当然不会出现乱码了= =
[其他解释]
iso-8859-1 汉字 length = 2
[其他解释]
引用:

import java.io.*;
public class file4 {

public static void main(String[] args) throws Exception
{
File f=new File("d:\\filetest\\file.txt");
File f1=new File("d:\\filetest\\f……


重点看看FileInputStream和InputStreamReader和BufferedInputReader类。

[其他解释]
字节流做这样的操作肯定不会错,与编码无关,他总是按字节读,按字节原样写出,无非是一个汉字被分成多个字节去写而已。
[其他解释]
UTF-8、GBK、gb2312等编码下,各不相同。
[其他解释]
该回复于2012-11-07 14:59:34被管理员删除
[其他解释]
我看书说FileInputStream是用来处理字节的。
那我问你InputStream是用来干嘛的?你再多查下资料看看有什么区别,
自己动手去查印象会更深
[其他解释]
错了,是BufferedReader。
[其他解释]
跟那个无关的,概念错误

读书人网 >J2SE开发

热点推荐