这是java写的一段简单的代码,是要倒置输出一个文本文件,为什么能编译也能运行,但是没有结果。求帮忙。
importjava.io.*;publicclassE9_12{publicstaticvoidmain(Stringargs[]){try{RandomAccessF...
import java.io.*;
public class E9_12{
public static void main(String args[]){
try{
RandomAccessFile in=new RandomAccessFile("Student.txt","rw");
for(long i=(in.length()-1);i>=0;i--){
in.seek(i*4);
System.out.printf("%d",in.readInt());
}
in.close();
}
catch(IOException e){}
}
} 展开
public class E9_12{
public static void main(String args[]){
try{
RandomAccessFile in=new RandomAccessFile("Student.txt","rw");
for(long i=(in.length()-1);i>=0;i--){
in.seek(i*4);
System.out.printf("%d",in.readInt());
}
in.close();
}
catch(IOException e){}
}
} 展开
2个回答
展开全部
1.建议异常处理里写上e.printStackTrace();好知道哪里有错。
2.路径问题。new RandomAccessFile("Student.txt","rw");如new RandomAccessFile("src\\test\\Student.txt","rw");根据你的环境改下路径试试。
3.in.seek(i*4);seek(long pos)中pos- 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。pos是字节偏移,而i的起始值为文件的总字节数。那文件不为空则i*4肯定超出文件长度了。仔细想想是不是有问题?应该改为in.seek(i);
4.倒置输出一个文本文件,是指文件的所有字节倒着输出?in.readInt()这个函数一次输出4个字节。文件总长度如果不是4的倍数怎么输的完,而且也不是所有字节都倒着输出了。应该改为in.read().
2.路径问题。new RandomAccessFile("Student.txt","rw");如new RandomAccessFile("src\\test\\Student.txt","rw");根据你的环境改下路径试试。
3.in.seek(i*4);seek(long pos)中pos- 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。pos是字节偏移,而i的起始值为文件的总字节数。那文件不为空则i*4肯定超出文件长度了。仔细想想是不是有问题?应该改为in.seek(i);
4.倒置输出一个文本文件,是指文件的所有字节倒着输出?in.readInt()这个函数一次输出4个字节。文件总长度如果不是4的倍数怎么输的完,而且也不是所有字节都倒着输出了。应该改为in.read().
追问
不好意思,回复迟了。如果in.length()表示字节数,那么"in.length()-1"这种表述正确吗?
追答
in.seek(in.length()-1);//这样设置后,in.read()读取的就是文件最后一个字节。
in.seek(in.length());//这样设置的,in.read()返回值会变为-1.
如果你是为了倒置输出一个文本文件,建议你不要使用RandomAccessFile,因为这个类是按字节读取的,而文本文件的编码格式是GB2312、UTF-8,以及文件里的字符是英文,或者是中文,对一个字符所占用的字节数是不同的,不好判断。可以使用InputStreamReader类按字符读取,不要按字节读取。
展开全部
package temp;
import java.io.*;
import java.util.Stack;
//import Lists;
public class E9_12{
public static void main(String args[]){
try{
String str;
Stack temp=new Stack();
FileInputStream f = new FileInputStream("D:\\Student.txt");
BufferedReader dr=new BufferedReader(new InputStreamReader(f));
while((str=dr.readLine()) != null){
//System.out.println(str);
temp.push(str);
}
while(!temp.isEmpty()){
System.out.println(temp.pop());
}
System.out.println();
}
catch(IOException e){
System.out.println(e);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询