【发布时间】:2018-02-08 07:50:17
【问题描述】:
我实际上需要在我的 pgAdmin 数据库中为货币导入一个 csv 文件。我的文件如下;
我的代码如下,使用 ISO-8859-1 格式。
File fileDir = new File(fileName);
FileInputStream fis= new FileInputStream(fileDir);
InputStreamReader isr= new InputStreamReader(fis, "ISO-8859-1");
BufferedReader br = new BufferedReader(isr);
String line;
line = br.readLine();
String[] arrayHeader = line.split(";");
size = arrayHeader.length;
if(size==expectedSize){
//check header
String header[] = {"Currency_ISO", "Currency_Label", "Currency_Symbol"};
for(int i=0;i<header.length;i++){
if(arrayHeader[i].trim().equals(header[i])){
fileStatus = true;
sResult = "File Status: Valid <br/> ";
}
else{
fileStatus = false;
sResult = "File Status: Invalid <br/> ";
break;
}
}
}else{
fileStatus = false;
sResult = "File Status: Invalid <br/> ";
}
if(fileStatus){
while ((line = br.readLine()) != null) {
String[] arrayData = line.split(";", -1);
//create object
objCurrency = new clsCurrency();
if(arrayData[0] != "" && !arrayData[0].isEmpty() && arrayData[0].trim() != ""){
objCurrency.setsCurrencyIso(arrayData[0].trim());
}else{
objCurrency.setsCurrencyIso(null);
}
if(arrayData[1] != "" && !arrayData[1].isEmpty() && arrayData[1].trim() != ""){
objCurrency.setsCurrencyLabel(arrayData[1].trim());
}else{
objCurrency.setsCurrencyLabel(null);
}
if(arrayData[2] != "" && !arrayData[2].isEmpty() && arrayData[2].trim() != ""){
System.out.println("setsLocalCurrencySymbol: " + arrayData[2]);
objCurrency.setsCurrencySymbol(arrayData[2].trim());
}else{
objCurrency.setsCurrencySymbol(null);
}
lstCurrencyImported.add(objCurrency);
}//end while
如您所见,我有一个System.out.Println() 来检查正在读取的符号值。但主要问题是符号没有被正确读取。它正在返回?。见下面的println;
[stdout] (default task-7) setsCurrencySymbol: ?
我尝试将格式更改为UTF-8 或UTF-16,但没有成功。
我在网上看到有Java的currency类,但问题是我需要直接从csv中读取它,而且我认为用户不知道每种货币的代码。
知道我该如何从这里开始吗?
【问题讨论】: