【发布时间】:2023-04-10 05:33:01
【问题描述】:
您好,我的问题是如何按列过滤文本文件,我的意思是我想从行之间的范围内剪切文件。 我的文件包含这种数据:
284015160747447;8935901990807474474;
284015160747448;8935901990807474482;
284015160747449;8935901990807474490;
284015160747450;8935901990807474508;
284015160747451;8935901990807474516;
284015160747452;8935901990807474524;
284015160747453;8935901990807474532;
284015160747454;8935901990807474540;
284015160747455;8935901990807474557;
284015160747456;8935901990807474565;
284015160747457;8935901990807474573;
284015160747458;8935901990807474581;
284015160747459;8935901990807474599;
284015160747460;8935901990807474607;
284015160747461;8935901990807474615;
284015160747462;8935901990807474623;
284015160747463;8935901990807474631;
我希望用户能够将要写入的内容从原始文件过滤到新创建的文件中: 例如从 8935901990807474490 到 8935901990807474532,对于这个数字,起始行和最后一行都在这个范围内。
public class Test_read_file {
public static List<String> readFile() throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader("C:\\\\\\\\Users\\\\\\\\Admin\\\\\\\\Desktop\\\\\\\\Work Files\\\\\\\\314-WO0000001133814\\\\\\\\Cards\\\\\\\\MBD10760_182.out"))) {
List<String> listOfData = new ArrayList<>();
String d;
while ((d = br.readLine()) != null) {
listOfData.add(d);
}
return listOfData;
}
}
public static void writeFile(List<String> listOfData) throws IOException {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\\\\\\\Users\\\\\\\\Admin\\\\\\\\Desktop\\\\\\\\Work Files\\\\\\\\314-WO0000001133814\\\\\\\\Cards\\\\\\\\MBD10760_187.out"))) {
for (String str : listOfData) {
bw.write(str);
bw.newLine();
}
}
}
public static void main(String[] args) throws IOException {
List<String> data = readFile();
writeFile(data);
}
}
【问题讨论】:
-
你能详细说明一下这些列的含义吗?示例文件是否每行显示一行?还是只是一个长字符串?
-
是的,它显示了文本文件,它包含两列,第一列:284015160747447 和第二列 8935901990807474474 用 ; 分隔。我成功读取和写入文件,但我想通过第二列和过滤器过滤文本文件某个范围之间的所有数据,例如从 8935901990807474490 到 8935901990807474532 写入新文件中两条记录之间的所有行
-
所以每行包含4个数字?还假设范围是从
284015160747447到8935901990807474482,这是否意味着您要写以下数字? - 284015160747447;8935901990807474474; 284015160747448;8935901990807474482; -
这是一行:284015160747447;8935901990807474474。我不会从第二列 8935901990807474474 中过滤并保存给定范围之间的整个记录
-
所以您只想将出现在第二列中的数字写入给定范围的文件?同时提供一个示例输出。
标签: java file arraylist bufferedreader bufferedwriter