Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改txt文件中列的顺序_Java_Database_Text Files - Fatal编程技术网

Java 更改txt文件中列的顺序

Java 更改txt文件中列的顺序,java,database,text-files,Java,Database,Text Files,我有一个txt文件,其中有些列没有出现在每一行中,但这会导致出现问题,即在它们出现的行中,它们会扰乱我的列的顺序: 35=d|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=d d 0 0 0 7 7 7 7 7 7 7 7 7 7 7 0 0=10 10 10 0 0 0 0 0 0=4 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=5 4 4 4 4 4 4=5 5\12

我有一个txt文件,其中有些列没有出现在每一行中,但这会导致出现问题,即在它们出现的行中,它们会扰乱我的列的顺序:

35=d|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=d d 0 0 0 7 7 7 7 7 7 7 7 7 7 7 0 0=10 10 10 0 0 0 0 0 0=4 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=5 4 4 4 4 4 4=5 5\12444 7 7 7 7 7 7 7=5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=4=4 4 4 4 4 4 4 4 4 4 4 4 4 4 4=5=5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4=124; 996=IPNT | 1147=50.000000000 | 1150=302775.000000000 | 731=00000110 | 5796=20190724 | 1149=315600.000000000 | 1148=285500.000000000 1243=600.000000000 | 1146=12.500000000 | 9779=N | 864=2 | 865=5 | 1145=2019031513300000000 | 865=7 1245=2020061913300000000 1241=1 | 1022=GBX | 264=10 | 870=1 | 871=24 124872=0000000000000 10000010001111 1244=0 1245791=279 1245792|

35=d|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=d d 0 0 0 7 7 7 7 7 7 7 7 7 0 0 0=10 10 1012400 0 0 0 0 0 0 0 0 0 0 0 0=4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=5 512477 7 7 7=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=4=4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4=5\\\\12444 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4=5=5=5 5\\124;;| 996=IPNT | 1147=50.000000000 | 1150=302150.000000000 | 731=00000110 | 5796=20190724 1249=315700.000000000 | 1148=28560000000000 1243=600.000000000 | 1146=12.500000000 | 9779=N | 864=2 | 865=5 | 1145=20180615133000000 | 865=7 1245=20190920133000000 1241=1 | 1022=GBX | 264=10 | 870=1 | 871=24 124872=0000000000000 10000100001000010000001111 1244=0 124519=250519 1244592|

35=d| 5799=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=10 10 101241010 0 0 0 0 0=10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=10 10 10 0 0 0 0 0 0 0 0 0 0=10 10 10 10=10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=10=10 10 10 10 10 10 10 10=10 10 10 10 10 10 10 10=10 10 10 10 10 10 10=10 10 10 10 10 10 10 10 10 10 10=10 10 10 10 10 10 10 10 10 10 10 10 10===4 4 4=4 4 4 4 4=4 4 4 4 4 4=4 4 4 4 4=000000 | 996=IPNT | 1147=50.000000000 | 1150=25.000000000 | 731=00000011 | 5796=20190607 | 1143=0.000000000 | 1146=12.500000000 | 9779=N | 864=2 | 865=5 | 1145=2019062113300000000000 | 865=7 | 1145=2019081613300000000 | 1141=1 | 1022=GBX | 264=10 | 870=1 | 871=24 | 872=000000000000000000100001000010000001111 | 1234=0|

35=d | 5799=00000000 | 980=A | 779=2019072117311400729 | 1180=441 | 1300=56 | 462=16 | 207=DUMX | 1151=1O | 6937=OQE | 55=OKEH44.1=OCEFPS 1241010 1012466 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1.100000000 | 9779=N | 5796=20190718 | 864=2 | 865=5 | 1145=201810312130000000000 | 865=7 | 1145=20240126193000000000 1241=1 | 1022=GBX | 264=3 | 870=1 | 871=24 | 872=0000000000000000101 | 1234=1 | 1093=4 | 1231=1.0000 | 711=1 | 309=211120 | 305=8 | 311=OQDH4 | 1647=0|

35=d | 5799=00000000 | 980=A | 779=2019072117311000229 | 1180=441 | 1300=56 | 462=16 | 207=DUMX | 1151=1O | 6937=OQE | 55=OKEM42007年7月7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,,,\\\\124周四周四周四周四周四周四周日周日周日周日周日周日周日,,,,,,,,,,,,,,,,,,,,,,,,1.100000000 | 9779=N | 5796=20190718 | 864=2 | 865=5 | 1145=201810312130000000000 | 865=7 | 1145=2024042518300000000 1241=1 | 1022=GBX | 264=3 | 870=1 | 871=24 | 872=0000000000000000101 | 1234=1 | 1093=4 | 1231=1.0000 | 711=1 | 309=329748 | 305=8 | 311=OQDM4 | 1647=0|

例如,在前三行中总是出现
461=…
,然后是
200=…
,而从第四行开始,在
461=…
200=…
之间有
201=…

现在,我想把后面出现的每一列(第一行中没有的列)移到行的末尾,使它成为最后一列,但我不知道如何准确地执行此操作。以下是我尝试过的:

 private static void ladeDatei(String datName) { 

        File file = new File(datName); 
        
        if (!file.canRead() || !file.isFile()) 
            System.exit(0); 

            BufferedReader in = null; 
        try { 
            in = new BufferedReader(new FileReader(datName)); 
            String row = null;
                String row2 = null; 
            while ((row = in.readLine()) != null) { 
                System.out.println("Gelesene Zeile: " + row); 
                
                 while(row.contains("|")) {
               
                    row2 = row.substring(row.indexOf("|") + 1);
                    row=row2;
                    row2 = row.substring(0, row.indexOf("=") + 1);
                    row2 = row2.replace("=", "");
                    if(!numbers.contains(row2)) {
                        numbers.add(row2);
                    }
                    System.out.println(row);
                    //System.out.println(row2);
                }             
                
            } 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } finally { 
            if (in != null) 
                try { 
                    in.close(); 
                } catch (IOException e) { 
                } 
        } 
    } 
我曾想过将每一行拆分为|,并将它们保存在textArr列表中,但那时我不知道哪些行属于同一行。我的主要问题是,我不知道有什么好方法可以检查列是否存在于前一行中,以及如何将其移动到行的末尾

编辑:现在我保存了numbers arraylist中的每个新条目(请参见上面代码中的编辑),但现在我被卡住了,因为我不知道如何将它们和它们后面的所有条目移动到每行的末尾。

这是一项非常糟糕的工作。我要做的是:
(1) 在
|

处拆分行 (2) 制作一个
列表
,在其中添加
|
=
之间的数字(在末尾添加每个新数字)
(3) 制作一个
映射图
,其中线条部分映射到(2)中的数字作为键
(4) 制作第二个
映射
,其中线条部分的最大列值映射到(2)中的数字
(5) 通读(2)中的列表,将相关线路部分与填充到最大列值的
|
连接起来 (如果没有特定数字的线条部分,则还必须进行填充)
如果可能的话-我更愿意在html表格中构造行部分。
改变列顺序并不能解决列更宽或更小的问题