我想随机从两个文件中读取中文字符
文件中字符排列如下
第一个文件中 第二个文件中
梦琪 赵
忆柳 钱
之桃 孙
慕青 李使用文件随机进行读取字符 但写入后出现乱码
代码如下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中字符转换的东西,但都是过了,还是没用,请各位指教
急求,。
文件中字符排列如下
第一个文件中 第二个文件中
梦琪 赵
忆柳 钱
之桃 孙
慕青 李使用文件随机进行读取字符 但写入后出现乱码
代码如下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中字符转换的东西,但都是过了,还是没用,请各位指教
急求,。
2. txt文档的中文字符占用2个字节,RandomAccessFile的读写以1个字节为单位...建议:1. 注意ASCII-US和Unicode转码问题.
2. 使用Reader/Writer代替RandomAccessFile,前者是按字符单位操作的,一次全部读入,然后在字符串中进行随机操作.
byte[] b=st.getBytes("GBK");
file.write(b);
file.frush();
file.close();
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);
}
}
你可以试着从上面改一下