繁体   English   中英

如何在Java中将文件内容放入数组的字符串

[英]How to put the contents of a file to a String of array in java

我有一个包含一些记录的String数组,现在我必须将这些记录放入文件中,并且必须读取这些值,并且必须检查具有String数组值的记录。这是我的String数组。

 public final static String fields[] = { "FileID", "FileName", "EventType",
        "recordType", "accessPointNameNI", "apnSelectionMode",
        "causeForRecClosing", "chChSelectionMode",
        "chargingCharacteristics", "chargingID", "duration",
        "dynamicAddressFlag", "iPBinV4AddressGgsn",
        "datavolumeFBCDownlink", "datavolumeFBCUplink",
        "qoSInformationNeg"};

我必须使用这些记录将它们放在地图上,

 static LinkedHashMap<String, String> getMetaData1() {
  LinkedHashMap<String, String> md = new LinkedHashMap<>();
  for (String fieldName : fields) md.put(fieldName, "");

  return md;

}

现在我的文件是

        FileID 
        FileName
        EventType
        recordType
        accessPointNameNI
        apnSelectionMode
        causeForRecClosing
        chChSelectionMode
        chargingCharacteristics
        chargingID
        duration
        dynamicAddressFlag
        iPBinV4AddressGgsn
        datavolumeFBCDownlink
        datavolumeFBCUplink
        qoSInformationNeg 

现在我正在使用此功能读取该文件

static LinkedHashMap<String, String> getMetaData() {


    LinkedHashMap<String, String> md = new LinkedHashMap<>();
    BufferedReader br = null;
    try {

        String sCurrentLine;
        String file[];
        br = new BufferedReader(new FileReader("./file/HuaGPRSConf"));

        while ((sCurrentLine = br.readLine()) != null) {


         md.put(sCurrentLine, "");
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)
                br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }


    return md;
}

现在,这两个函数以两种不同的方式重现值。

{FileID=, FileName=, EventType=, recordType=, accessPointNameNI=, apnSelectionMode=, causeForRecClosing=, chChSelectionMode=, chargingCharacteristics=, chargingID=, duration=, dynamicAddressFlag=, iPBinV4AddressGgsn=, datavolumeFBCDownlink=, datavolumeFBCUplink=, qoSInformationNeg=} 

但是我从中获取值的文件给值提供了很大的空格。

{            FileID =,             FileName=,             EventType=,             recordType=,             accessPointNameNI=,             apnSelectionMode=,             causeForRecClosing=,             chChSelectionMode=,             chargingCharacteristics=,             chargingID=,             duration=,             dynamicAddressFlag=,             iPBinV4AddressGgsn=,             datavolumeFBCDownlink=,             datavolumeFBCUplink=,             qoSInformationNeg=,             rATType=,             ratingGroup=,             resultCode=,             serviceConditionChange=,             iPBinV4Address=,             sgsnPLMNIdentifier=,             timeOfFirstUsage=,             timeOfLastUsage=,             timeOfReport=,             timeUsage=,             changeCondition=,             changeTime=,.... so on

现在,当我尝试使用此功能检查两个值时,它们不相等。

LinkedHashMap<String, String> md1=getMetaData();
    LinkedHashMap<String, String> md2=getMetaData1();

    if(md1.equals(md2)){
        System.out.println(md1);
    }else{
        System.out.println("Not");
    }             

我不明白这个问题,谁能帮忙...

您应该使用sCurrentLine.trim()删除不必要的空格。

您正在检查LinkedHashMap 2个不同实例是否相等。 您必须使用LinkedHashMap get方法比较值。

另外,您还应该通过String trim方法删除空格。

我建议在比较之前先检查数据,如果发现多余的空间,则首先应用trim()删除空间然后进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM