如何将某些条件写入二进制文件的文本文件中

时间:2016-04-05 18:15:30

标签: java binaryfiles

我开发了一种方法,它将从.data文件中提取所有数据并将其写入文本文件

myTextFile = new PrintWriter(
                    new BufferedOutputStream(new FileOutputStream("file.txt")));
            input = new DataInputStream(new FileInputStream(new File("file.data")));



  //This loop will take all info found in file.data but what if I want only where country is USA for exemple 
            while (input.available() > 0) {

                countryNumber = input.readInt();
                population = input.readInt();
                region = input.readUTF();
                State = input.readUTF();
                loan = input.readInt();
                categorie = (input.readChar());
                adresse = (input.readUTF());
                descrpt = input.readUTF();
            //Now I  print all info from file.data to file.txt
       myTextFile.println(region.toString() + " " + population.toString() + " " + region + " " + State + " " + categorie + " " + loan + " " + adresse);

            }
 myTextFile.close();
            input.close();

正如您所注意到的,我创建了一个循环While(imput.available()>0,它将获取file.data中的所有数据并将所有内容写入文本文件

但是如果我想在text = NewYork中的文本文件中写一下呢?并在文本文件中写下纽约的人口,州等......

他们能以任何方式限制标准吗?

非常感谢,

低音

2 个答案:

答案 0 :(得分:1)

执行此类操作的最佳方法是通过记录为每条记录分配固定数量的字节我指的是元组countryNumber,人口,地区,州,贷款,类别,地址和描述。然后将区域的值作为记录的第一个值,这样您就可以读取区域,检查它是否是预期的区域,如果是,您可以停止读取文件,否则直接转到下一个记录,依此类推。

此方法允许您只读取文件的子部分,而不是读取更优化的所有部分。

答案 1 :(得分:1)

在编写之前,你可以添加一个if语句来检查region.equals(" NewYork")。 那将是:

if(region.equals("NewYork")) myTextFile.println(region.toString() + " " + population.toString() + " " + region + " " + State + " " + categorie + " " + loan + " " + adresse);