一个文件包含的都是字母,如一个111.txt文件,要对文件中的任意两个字母交换位置,怎样实现?
我写了这样的代码但不起作用,希望高手指点下
char[] s = new char[3];
RandomAccessFile rf = new RandomAccessFile("F:/111.txt","r");//随即读取
s[0] = rf.readChar();//读取的一个字母
s[1] = rf.readChar();//在读取的一个字母
s[2] = s[0];//交换位置
s[0]= s[1];
s[1] = s[2];
这样能不能实现字母交换位置?
我写了这样的代码但不起作用,希望高手指点下
char[] s = new char[3];
RandomAccessFile rf = new RandomAccessFile("F:/111.txt","r");//随即读取
s[0] = rf.readChar();//读取的一个字母
s[1] = rf.readChar();//在读取的一个字母
s[2] = s[0];//交换位置
s[0]= s[1];
s[1] = s[2];
这样能不能实现字母交换位置?
解决方案 »
- 关于FileInputStream的问题
- java继承多态的那些事儿!
- JMenuItem如何添加扩展菜单
- 提供较全的Oreilly书籍下载,顺便进行本月第二次散分(来者有分)
- 代友招2年以上Java开发,懂日语,工作地区:上海。
- 【求助】怎样访问父类的父类的同名属性?
- 大家用啥来建模?
- Applet 为什么会连接数据库出错?? Application 一切正常啊
- 用jbuilder做的application,该选择Archive Builder里的哪个Archive type?
- JBUILDER3中怎样调用APPLETVIEWER
- 为什么java中的boolean长度是一个bit
- 程序结果与我预想的不一样.....请教
楼主【hyhuizhen】截止到2008-07-03 13:28:14的历史汇总数据(不包括此帖):
发帖的总数量:7 发帖的总分数:80
结贴的总数量:7 结贴的总分数:80
无满意结贴数:2 无满意结贴分:20
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:28.57 % 无满意结分率:25.00 %
敬礼!
该怎么弄呢?
创建从中读取和向其中写入(可选)的随机存取文件流,该文件具有指定名称。
import java.io.RandomAccessFile;public class Test {
public static void main(String[] args) throws IOException {
int[] s = new int[3];
RandomAccessFile rf = new RandomAccessFile("111.txt","rw");//随即读取
s[0] = rf.read();//读取的一个字母
s[1] = rf.read();//在读取的一个字母
System.out.println(s[0]+" "+s[1]);
s[2] = s[0];//交换位置
s[0]= s[1];
s[1] = s[2];
rf.seek(0);
rf.writeByte(s[0]);
rf.writeByte(s[1]);
rf.close();
}
}
哈哈
import java.nio.channels.*;
import java.io.*;
public class Test
{
private ByteBuffer b=ByteBuffer.allocate(1024);
public void method(String FileName)throws Exception
{
FileChannel f=new RandomAccessFile(FileName,"rw").getChannel();
while((f.read(b))!=-1)
{
b.flip();
while(b.hasRemaining())
{
b.();
byte b1=b.get();
byte b2=b.get();
b.reset();
b.put(b2);
b.put(b1);
}
b.rewind();
f.position(0);
f.write(b);
b.clear();
}
f.close();
}
public static void main(String[] args)throws Exception
{
String FileName="d:/qdb.txt";
Test t=new Test();
t.method(FileName);
}
}
用nio写的,还一些方法忘了,这边没API~闷
你是要修改文件中的 字节的内容呢
还是要修改读取后的S[0],S[1]的内容?
怎么看 你也只修改了 S[0],S[1]的内容
那个程序对我来说功能足够了
br = new BufferedReader(new FileReader(f));
s = br.readLine( );
char[] cArray = s.toCharArray( );
char c ;
int random1 = (int)(Math.random()*26);
int random2 = (int)(Math.random()*26);
c = cArray[random1];
cArray[random1] = cArray[random2];
cArray[random2] = c;
然后通过seek()和readChar获得这两个字符。
至于写回去,好像java的输入输出流都没有替换字符的函数。
个人建议就是用readChar一个一个字符读出去,并且记录读取的长度,然后写到另外一个文件,在达到两个随机数的就交换写入。