gu123xin 2018-08-06 09:04 采纳率: 95.2%
浏览 2319
已采纳

java需要从.txt文本里读取特定的字段,并写入另一个.txt

读取之前图片说明
读取之后图片说明
a,b,c,....e是表示标签,先的是数据,我需要读取特定标签下面的数据,麻烦写个代码,谢谢,我刚学java,超级菜鸟,别嘲笑,现在力求进步,谢谢大佬们,运行成功,就给币。

  • 写回答

9条回答 默认 最新

  • batter少年 2018-08-06 10:09
    关注
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    public class TestAAA {
    
        public static void main(String[] args) throws Exception {
            File file = new File("C:\\Users\\Administrator\\Desktop\\新建文本文档.txt");
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\新建文本文档1.txt")),"UTF-8"));
            String[] strs = {"a", "b", "d", "e"};//要读的标签
            int num[] = new int[strs.length];//每个标签的位置
            String[] left = new String[strs.length];
            String[] right = new String[strs.length];
            BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream),5*1024*1024);
            String line = null;
            if((line = reader.readLine()) != null) {
                String[] infoArraay = line.split(" ");
                for (int i = 0; i < strs.length; i++) {
                    for (int j = 0; j < infoArraay.length; j++) {
                        int begin = 0;
                        if((begin=infoArraay[j].indexOf(strs[i]))!=-1) {
                            num[i] = j;
                            String leftStr = infoArraay[j].substring(0, begin);;
                            String rightStr = infoArraay[j].substring(begin+strs[i].length()-1, infoArraay[j].length()-1);
                            left[i] = leftStr;
                            right[i] = rightStr;
                            writer.write(infoArraay[j]+" ");
                            break;
                        }
                    }
                }
                writer.newLine();
            }
            while((line = reader.readLine()) != null) {//逐行的读
                String[] infoArraay = line.split(" ");
                String str = "";
                for (int i = 0; i < num.length; i++) {
                    str += infoArraay[num[i]].replace(left[i], "").replace(right[i], "")+",";
                }
                str = str.substring(0, str.length()-1);
                writer.write(str);
                writer.newLine();
            }
            reader.close();
            writer.close();
        }
    }
    

    改了下,你试试
    运行前
    a b c d .....e.....
    a1 b1 c1 d1 .....e1.....
    a2 b2 c2 d2 .....e2.....
    a3 b3 c3 d3 .....e3.....
    a4 b4 c4 d4 .....e4.....
    a5 b5 c5 d5 .....e5.....
    a6 b6 c6 d6 .....e6.....
    a7 b7 c7 d7 .....e7.....
    a8 b8 c8 d8 .....e8.....
    a9 b9 c9 d9 .....e9.....
    运行后
    a b d e
    a1,b1,d1,e1
    a2,b2,d2,e2
    a3,b3,d3,e3
    a4,b4,d4,e4
    a5,b5,d5,e5
    a6,b6,d6,e6
    a7,b7,d7,e7
    a8,b8,d8,e8
    a9,b9,d9,e9

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序