package com.bg7yoz.ft8cn.callsign; /** * 预处理呼号数据库的文件操作,呼号的来源是CTY.DAT * @author BG7YOZ * @date 2023-03-20 */ import android.content.Context; import android.content.res.AssetManager; import com.bg7yoz.ft8cn.GeneralVariables; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; public class CallsignFileOperation { public static String TAG="CallsignFileOperation"; public static String[][] countries; /** * 从assets目录中的cty.dat中读出呼号分配国家和地区的列表。呼号字符串中包括多个字符串,以逗号分割, * @param context 用于调用getAssets()方法。 * @return ArrayList 返回CallsignInfo数组列表 */ public static ArrayList getCallSingInfoFromFile(Context context){ ArrayList callsignInfos=new ArrayList<>(); //读出国家和地区的中英文对应翻译表。保存到countries二维数组中。 countries=getCountryNameToCN(context); AssetManager assetManager = context.getAssets(); try { InputStream inputStream= assetManager.open("cty.dat"); String[] st=getLinesFromInputStream(inputStream,";"); for (int i = 0; i getCallsigns(String s){ String[] ls=s.replace("\n","").split(","); Set callsigns=new HashSet<>(); for (int i = 0; i < ls.length ; i++) { if (ls[i].contains(")")) { //Log.d(TAG,ls[i]); ls[i] = ls[i].substring(0, ls[i].indexOf("(")); //Log.d(TAG,ls[i]+" ((("); } if (ls[i].contains("[")) { //Log.d(TAG,ls[i]); ls[i] = ls[i].substring(0, ls[i].indexOf("[")); //Log.d(TAG,ls[i]+" 【【【"); } callsigns.add(ls[i].trim()); } return callsigns; } }