JAVA逐行读取指定文件中的内容,每行中的不同内容用任意个空格分开。

文件中的内容格式为(中间可以用任意个空格隔开):

1         张三       品德优良

a         JACK       SMArt


package ReadFileLine;
/*
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.setNext(p);
        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);

}
}





  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值