使用随机访问流读出文本文件最后n个字符,文本文件名和数字n用命令行参数的方式提供。 以下程序是本题的主要代码,按照题目要求运行时命令行指定文本文件名和数字n。例如在命令提示符窗口运行:java shiyan44 text.txt 12 其中文本文件名 text.txt对应args[0], 12对应args[1]。必须加以注意的是这里12为字符串,要求在程序中加以处理转化为数值类型。请根据功能要求将空白处的语句填写完整。 import java.io.* ; public class shiyan43{ public static void main(String args[])throws Exception{ String filename,s,t; int n=0; long leng,filepoint; //注意这里定义为长整型 RandomAccessFile file= ; //创建随机文件读写对象 leng=file.length(); t=args[1]; //以下循环语句完成将从命令行接受到的数字字符转换成为整数类型 for(int i=0;i<t.length();i++){ n=10*n+(int)(t.charAt(i)-48); } file.skipBytes((int)(leng-n)); //将文件指针向前移动到最后n个字符,请注意这里为何要将长整形转换为整型类型 filepoint=file.getFilePointer(); while(filepoint<leng){ s= ; //读出内容并赋值给变量s System.out.println(s); filepoint=file.getFilePointer(); } file.close(); } }
时间: 2023-06-10 11:03:26 浏览: 1032
String filename,s,t;
int n=0;
long leng,filepoint;
RandomAccessFile file=null; //需初始化,防止后面关闭对象时抛出异常
filename=args[0];
t=args[1];
for(int i=0;i<t.length();i++){
n=10*n+(int)(t.charAt(i)-48); //将字符转换为整数类型
}
try{
file=new RandomAccessFile(filename,"r"); //创建只读模式的随机访问文件对象
leng=file.length();
file.skipBytes((int)(leng-n)); //将文件指针移动到倒数第n个字符处
filepoint=file.getFilePointer();
while(filepoint<leng){
s=file.readLine(); //逐行读取文件内容
if(s!=null){ //判断读取的内容是否为空行
s=s.trim(); //去除字符串首尾空格
if(!s.equals("")){ //判断字符串是否为空
System.out.println(s); //输出非空字符串
}
}
filepoint=file.getFilePointer();
}
}catch(Exception e){
e.printStackTrace();
}finally{ //关闭文件对象
try{
if(file!=null){
file.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
阅读全文