Java 更改txt文件中列的顺序
我有一个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| 例如,在前三行中总是出现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
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表格中构造行部分。
改变列顺序并不能解决列更宽或更小的问题