文件中的内容格式为(中间可以用任意个空格隔开):
1 张三 品德优良
a JACK SMArt
/*
Readline类存储文件中每行中不同模块的信息,并以类似指针的方式存储每一行
*/
public class Readline {
public String numv1;
public String namev2;
public String deswe;
private Readline next;
public Readline() {
numv1="-1";
namev2="-1";
deswe="-1";
next=null;
}
public Readline(String n,String n1,String n2) {
numv1=n;
namev2=n1;
deswe=n2;
next=null;
}public void setNext(Readline next) {
this.next=next;
}
public Readline getNext() {
return next;
}
}
/*
主文件测试读取情况
*/
package ReadFileLine;
import java.io.BufferedReader;import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Scanner;
public class ReadFile {
public static Readline readl=new Readline();
public static int readFileByLines(String fileName) throws IOException {
//返回文件中的行数,并将文件中的相应信息存储在以readl为头节点的链表中。
File file = new File(fileName);
BufferedReader reader = null;
Readline q=readl;
int line=0;
reader = new BufferedReader(new FileReader(file));
String tempString = null;
// 一次读入一行,读取一行执行一次while循环,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
String[] arr = tempString.split("\\s+");//遇到空格时,将空格后的内容给下一个arr数组单元
//列如读取第一行后,arr[0]为1,arr[1]为张三,arr[2]为品德优良
String num=arr[0];
String name=arr[1];
String des=arr[2];
q.numv1=num;
q.namev2=name;
q.deswe=des;
Readline p=new Readline();
//此处必须新建个节点,否则直接q=q.getNext()时会连接空节点出错
q=q.getNext();
line++;
}
reader.close();
return line;
}
public static Readline getLine(int n)//查询文件第n+1行中的相应内容,返回存储第n+1行内容的Readline对象
{
//System.out.println(sVex[nVex].name+" "+sVex[nVex].desc);
Readline r=readl;
for(int i=0;i<n;i++) {
r=r.getNext();
}
return r;
}
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
System.out.println("输入路径");
//ReadFile readfile=new ReadFile();
String path=scan.next();
System.out.println("行数为:"+readFileByLines(path));
System.out.println("请输入要查询的行数:");
// 注意:行数是从0开始的
int n=scan.nextInt();
Readline r=getLine(n);
System.out.println("编号:"+r.numv1+" 姓名:"+r.namev2+" 描述:"+r.deswe);
}
}