我崩溃了。紧急求助关于JAVA中中文字符的读取,与写入问题

gig020617 2008-01-10 11:03:43
我想随机从两个文件中读取中文字符
文件中字符排列如下
第一个文件中 第二个文件中
梦琪 赵
忆柳 钱
之桃 孙
慕青 李

使用文件随机进行读取字符 但写入后出现乱码
代码如下

public String createname(String name)
{

File f1=new File("xing.txt");//从姓 名两文件中随机读取,
File f2=new File("name.txt");
File f3=new File("demo.tex");//目标文件
//随机读取
try{

RandomAccessFile rf1=new RandomAccessFile(f1,"r");
RandomAccessFile rf2=new RandomAccessFile(f2,"r");
RandomAccessFile rf3=new RandomAccessFile(f3,"rw");
StringBuffer namebuffer=new StringBuffer();
Random ran1=new Random();
Random ran2=new Random();
int seek1;
int seek2;
boolean ok=false;
while(!ok)
{
seek1=ran1.nextInt(100);
seek2=ran2.nextInt(100);
rf1.seek(seek1);
rf2.seek(seek2);
//产生随机
String s1=rf1.readLine();
String s2=rf2.readLine();
if((s1!=" ")&&(s2!=" ")&&(s1!="\n ")&&(s2!="\n ")&&(s1!=null)&&(s2!=null)&&(s1!="? ")&&(s2!="? "))
{ok=true;//如果不为空或几种情况就算读取成功
namebuffer.append(s1);
namebuffer.append(s2);
}//if
}//while
name=namebuffer.toString();
byte[] bytes=name.getBytes("ISO-8859-1"); //这两句代码有必要吗
name= new String(bytes,"GBK");

f3.writeBytes(name+'\n'); //进行写入,写入之后出现乱码
return name;
}//try
catch(IOException e)
{
System.out.println("IOException");
}
return name;
}//creatname


在写入文件之后出现乱码,请问各位高手,应如何解决,在网上找了些关于 JAVA中字符转换的东西,但都是过了,还是没用,请各位指教
急求,。。。。。。。。。。。。。

...全文
182 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gig020617 2008-01-10
  • 打赏
  • 举报
回复
好的我看一下,谢谢
dcqouming 2008-01-10
  • 打赏
  • 举报
回复

import java.io.*;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Random;

public class TestFileRead {
public String createname(String name)
{
try{
FileReader br=new FileReader("c:\\xing.txt");
FileReader br2=new FileReader("c:\\name.txt");

BufferedReader bf= new BufferedReader(br);
BufferedReader bf2= new BufferedReader(br2);

String s=bf.readLine();
String s2=bf2.readLine();

name=s+s2;
System.out.println(name);
BufferedWriter bw=new BufferedWriter(new FileWriter("c:\\demo.txt"));
bw.append(name);

bw.close();
}catch(Exception e){
e.printStackTrace();
}
return name;
}
public static void main(String []args ){
TestFileRead trf=new TestFileRead();
String s="";
trf.createname(s);
}
}
你可以试着从上面改一下
gig020617 2008-01-10
  • 打赏
  • 举报
回复
3楼的,能解释一下吗,我要对txt读写,不是xml,而且怎么将字符输入文件呢,怎么把b转换为字符
Tian_930 2008-01-10
  • 打赏
  • 举报
回复
FileOutputStream file=new FileOutputStream("st.xml");
byte[] b=st.getBytes("GBK");
file.write(b);
file.frush();
file.close();
cangyue87 2008-01-10
  • 打赏
  • 举报
回复
1. txt文档是ASCII-US编码,Java读写采用Unicode编码...
2. txt文档的中文字符占用2个字节,RandomAccessFile的读写以1个字节为单位...

建议:

1. 注意ASCII-US和Unicode转码问题.
2. 使用Reader/Writer代替RandomAccessFile,前者是按字符单位操作的,一次全部读入,然后在字符串中进行随机操作.
gig020617 2008-01-10
  • 打赏
  • 举报
回复
我先顶上,帮帮忙阿
cangyue87 2008-01-10
  • 打赏
  • 举报
回复
有个苯办法,关闭当前的,重新建立一个...
gig020617 2008-01-10
  • 打赏
  • 举报
回复
还有个问题,如何让一个文件读完之后再回过头来从头读阿

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧