java读取TXT文件数据 如何三行算一次循环提取

try{BufferedReaderinput=newBufferedReader(newFileReader(targetPath));while((f=input.r... try {
BufferedReader input =new BufferedReader(new FileReader(targetPath));

while ((f=input.readLine())!=null) {

String info[] = f.split(" ");
HashMap map=new HashMap<>();

if(xfname!=null){
xfname=new String(ServletActionContext.getRequest().getParameter("xfname").getBytes(),"UTF-8");
map.put("code", info[0].trim());
map.put("area", xfname);
list.add(map);
System.out.println(list);
}else{
map.put("code", info[0].trim());
list.add(map);
}
}

} catch (Exception e) {

}

代码这样每次只能读取一行 如何读取三行的info[0]再进入下一次循环呢
展开
 我来答
Green142
2015-08-22 · TA获得超过355个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:105万
展开全部

整体思路:

1.每读取3行数据,保存一下;

2.输出的时候,判断是否够3行了,如果够3行就输出数据,否则继续保存数据。

代码截图:


测试的TXT文件-----a.txt

程序运行后输出的结果:

郁闷的小马1
2013-11-04 · 超过22用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:52.3万
展开全部
try {
        BufferedReader input =new BufferedReader(new FileReader(targetPath));
        int line = 0;
        while ((f=input.readLine())!=null) {
            while(line < 2){
                f += input.readLine();
                line++;
            }
            String info[] = f.split(" ");
            HashMap map=new HashMap<>();
                
            if(xfname!=null){
                xfname=new String(ServletActionContext.getRequest().getParameter("xfname").getBytes(),"UTF-8");
                map.put("code", info[0].trim());
                map.put("area", xfname);
                list.add(map);
                System.out.println(list);
            }else{
                map.put("code", info[0].trim());
                list.add(map);
            }
        }
                
    } catch (Exception e) {}
追问
readline遇到空行会读取一个空字符串 如何能去掉这个空字符串 要不然list中会有很多的空字符串- -
追答
......
int line = 0;
while ((f=input.readLine())!=null) {
    while(line < 2){
        f += input.readLine();
        line++;
    }
line = 0;            
//对数组进行排序,把空值移到数组的最后
int numberOfNull =0;
    String moveNull[] = f.split(" ");
for(int i = 0; i< moveNull.length;i++){
    if(moveNull[i] == null){
        for(int j = i; j< moveNull.length;j++){
            if(j != (moveNull.length-1))
                moveNull[j] = moveNull[j+1];
        }    
        numberOfNull++;
    }                
}        
//把数组中有效值,转移到另外一个数组中。
String[] info = new String[(moveNull.length-numberOfNull)];
for(int p =0;p < moveNull.length;p++)
    info[p] = moveNull[p];    
    HashMap map=new HashMap<>();                 
.......
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
漫悠兵兵
2013-11-04 · 超过10用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:25.4万
展开全部
如果不考虑性能,可以先读出来放到一个新的数组中啊,再循环新的数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式