使用随机访问流读出文本文件最后n个字符,文本文件名和数字n用命令行参数的方式提供。
代码如下:
import java.io.* ;
public class shiyan44{
public static void main(String args[])throws Exception{
String filename,s,t;
int n=0;
long leng,filepoint; //注意这里定义为长整型
RandomAccessFile file=new RandomAccessFile ("shiyan44.java","r"); //创建随机文件读写对象
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= file.readLine(); //读出内容并赋值给变量s
System.out.println(s);
filepoint=file.getFilePointer();
}
file.close();
}
}
我编译没错 就是感觉不能运行 新手多多指教
代码如下:
import java.io.* ;
public class shiyan44{
public static void main(String args[])throws Exception{
String filename,s,t;
int n=0;
long leng,filepoint; //注意这里定义为长整型
RandomAccessFile file=new RandomAccessFile ("shiyan44.java","r"); //创建随机文件读写对象
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= file.readLine(); //读出内容并赋值给变量s
System.out.println(s);
filepoint=file.getFilePointer();
}
file.close();
}
}
我编译没错 就是感觉不能运行 新手多多指教
另外,字符转换成整数可以这样的 n = Integer.parseInt(t);
public static void main(String args[]) throws Exception {
String filename, s, t;
filename = args[0];
int n = 0;
long leng, filepoint; //注意这里定义为长整型
RandomAccessFile file = new RandomAccessFile(filename, "r"); //创建随机文件读写对象
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 = file.readLine(); //读出内容并赋值给变量s
System.out.println("length:" + s.length());
System.out.println(s);
filepoint = file.getFilePointer();
}
file.close();
}程序应该没有错,简单的修改了一下,文件名修改成参数了,运行时输入两个参数本文件的文件名,和长度10length:1
;
length:5
}
length:1
}
从运行结果看,程序读出了最后的3行,如果加下每行最后的回车符,2+6+2刚好等于10.
另外汗一下那个将字符串转成数字的for循环,可以用Integer.parseInt(t);替换
RandomAccessFile file=new RandomAccessFile ("shiyan44.java","r"); 这边错了
("shiyan44.java","r"); 改成("xx.txt","r");