求助java使用RandomAccessFile流将一个文本文件倒置读出。用文本框和滚动杆来输出结果

importjava.awt.*;importjava.io.*;publicclassdaozhi{publicstaticvoidmain(Stringargs[])... import java.awt.*;
import java.io.*;
public class daozhi{
public static void main(String args[]){

RandomAccessFile in=null;
try{ in=new RandomAccessFile("gonglve.txt","rw");
long length=in.length(); //获取文件的长度
//long position=0;
for(long i=length-1;i>=0;i--){
in.seek(i*4);
// while(position<length){
String str=in.readLine();
byte b[]=str.getBytes("iso-8859-1");
str=new String(b);
// position=in.getFilePointer();
System.out.println(str);
//}
}
}
catch(IOException e){}
}
}

这个代码编译的时候没有问题,但是运行的时候会出现异常
Exception in thread "main" java.lang.NullPointerException
at daozhi.main(daozhi.java:14)
为什么?
展开
 我来答
韦涵涵
2009-04-25 · TA获得超过3892个赞
知道大有可为答主
回答量:1034
采纳率:100%
帮助的人:1502万
展开全部
import java.awt.Container;
import java.io.*;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class daozhi {

public static void main(String args[]) {

RandomAccessFile in = null;
try {
in = new RandomAccessFile("d:/demo.txt", "rw");
long length = in.length(); //获取文件的长度
long i=length-1;
char ch;
String s="";
while(i>=0){
in.seek(i);//设置文件指针
ch = (char) in.read();
s += ch;
i--;
}
showText(s);
} catch (IOException e) {
}
}
public static void showText(String s){
JFrame f=new JFrame("SetText");//frame
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//close
f.setBounds(0, 0, 300, 200);//location,sise
Container content=f.getContentPane();//panel
JPanel p=new JPanel();
JTextArea t=new JTextArea();//area
JScrollPane scrollPane=new JScrollPane(t);//scroll
t.setRows(1);//row
t.setColumns(10);//col
t.setText(s);//set text
p.add(scrollPane);
content.add(p);
f.setVisible(true);
}
}

呵呵。。。。

已经给楼主调试并成功运行!

正是楼主想要的结果。。。

而且还有文本框各滚动条噢。。

祝楼主早日成功哈!

备注:接毕业设计,价钱面议!
fangliangliang
2009-04-25 · TA获得超过1624个赞
知道小有建树答主
回答量:767
采纳率:0%
帮助的人:648万
展开全部
String str = in.readLine();
你的length不是判断他有多少行的,
所以你这样放在for循环里面就会有空值
str读不到东西就是NULL的

String str;
int i = 0;
while ((str = in.readLine())!=null) {
in.seek(i * 4);
// while(position<length){
str = in.readLine();
System.out.println(str);
byte b[] = str.getBytes("iso-8859-1");
str = new String(b);
// position=in.getFilePointer();
System.out.println(str);
i++;
//}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
spesun
2009-04-25 · TA获得超过224个赞
知道小有建树答主
回答量:682
采纳率:0%
帮助的人:371万
展开全部
new RandomAccessFile("gonglve.txt","rw");

注意这句是不是没读到文件。。路径啥的有没有问题。

还有可能是读到最后变成NULL了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guxing820
2009-04-25 · TA获得超过246个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:157万
展开全部
建议读出来一个StringBuffer里面,然后调用reverse()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式