如何通过java过滤文本文件并将结果保存到新文件中
您好,我的问题是如何按列过滤文本文件,我的意思是我想从行之间的范围剪切文件。 我的文件包含此类数据: 284015160747447;8935901990807474474;如何通过java过滤文本文件并将结果保存到新文件中,java,file,arraylist,bufferedreader,bufferedwriter,Java,File,Arraylist,Bufferedreader,Bufferedwriter,您好,我的问题是如何按列过滤文本文件,我的意思是我想从行之间的范围剪切文件。 我的文件包含此类数据: 284015160747447;8935901990807474474; 284015160747448;8935901990807474482; 284015160747449;8935901990807474490; 284015160747450;8935901990807474508; 284015160747451;8935901990807474516; 28401516074745
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; 我希望用户能够筛选要从原始文件写入新创建文件的内容: 例如,从893590199080747490到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);
}
}
public static void writeFile(List<String> listOfData, long num1, long num2)
throws IOException {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(OUT))) {
for (String str : listOfData) {
// change made here
if (Long.valueOf(str) >= num1 && Long.valueOf(str) <= num2) {
bw.write(str);
bw.newLine();
}
}
}
}
公共类测试\u读取\u文件{
公共静态列表readFile()引发IOException{
缓冲区领导层br=新缓冲区领导层(新文件阅读器)新文件阅读器(新文件阅读器)新文件阅读器(新文件阅读器)新文件阅读器(新文件阅读器)新文件阅读器(新文件阅读器(“C C C C:试试(缓冲区领导层br br br=新缓冲区领导层(新文件阅读器)br=新缓冲区领导层(新文件阅读器)新文件阅读器(新文件阅读器)新文件阅读器(新文件读者))))以下(C:C:C:C:C::::::\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\()("卡片"()(MBD10760(u 182.out))){
List listOfData=new ArrayList();
字符串d;
而((d=br.readLine())!=null){
添加(d);
}
返回数据列表;
}
}
公共静态void writeFile(List listOfData)引发IOException{
缓冲作家bw=新的缓冲作家bw=新的缓冲作家bw=新的缓冲作家bw=新的缓冲作家bw=新的缓冲作家(新的文件作者)新的文件作者(新的文件作者)新的文件作者(新的文件作者)新的缓冲作家(新的文件作者)新的文件作者(新的文件作者)新的文件作者(新的文件作者)新的文件作者(C)C:C:C:C:C:C:C:C:C:C:C::::::.\\\\\\11\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\写写写写写写写写写写写写写作者\\\\\(明信片)(明信片)(明信片)(明信片)(明信片)(明信片{
for(字符串str:listOfData){
bw.write(str);
换行符();
}
}
}
公共静态void main(字符串[]args)引发IOException{
列表数据=readFile();
可写文件(数据);
}
}
对代码进行以下更改:
public static void main(String[] args) throws IOException {
List<String> data = readFile();
Scanner sc = new Scanner(System.in);
System.out.println("Enter range");
long num1 = sc.nextLong();
long num2 = sc.nextLong();
writeFile(data, num1, num2);
sc.close();
}
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);
}
}
public static void writeFile(List<String> listOfData, long num1, long num2)
throws IOException {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(OUT))) {
for (String str : listOfData) {
// change made here
if (Long.valueOf(str) >= num1 && Long.valueOf(str) <= num2) {
bw.write(str);
bw.newLine();
}
}
}
}
publicstaticvoidwritefile(列表数据,长num1,长num2)
抛出IOException{
try(BufferedWriter bw=new BufferedWriter(new FileWriter(OUT)){
for(字符串str:listOfData){
//这里的零钱
如果(Long.valueOf(str)>=num1&&Long.valueOf(str)你能详细解释一下这些列的意思吗?示例文件是每行显示一行吗?还是只是一个长字符串?是的,它显示文本文件,它包含两列,第一列:28401560747447,第二列89359019908074744,以;分隔。我成功地读写了文件,但我想按第二列过滤文本文件并过滤所有内容某些范围之间的数据,例如从893590199080747490到8935901990807474532写入新文件两条记录之间的所有行SSO每行包含4个数字?还假设范围是从28401560747447
到89359019908074482
,这是否意味着要写入以下数字?-28401607447;8935901990807474;2840151607448;8935901990807474482;这是一行:2840151607447;89359019908074744。我不想从第二列8935901990807474进行筛选,并保存给定范围之间的所有记录。因此,您只想将第二列中出现的数字写入给定范围的文件中?请提供一个示例输出陆上通信线。