从远端服务器地址下载文件并解析成实体类对象
@Slf4j
public class Demo2 {
public static < T > List < T > getCsvData(String fileName, Class < T > clazz) {
InputStreamReader in = null;
try {
in = new InputStreamReader(new FileInputStream(fileName), "gbk");
}
catch (Exception e) {
log.error("读取csv文件失败!");
return null;
}
HeaderColumnNameMappingStrategy < T > strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(clazz);
CsvToBean < T > csvToBean = new CsvToBeanBuilder < T >(in).withSeparator(',').withQuoteChar('\'')
.withMappingStrategy(strategy).build();
return csvToBean.parse();
}
/**
* @param filePath 文件将要保存的目录
* @param url 请求的路径
* @return
* @throws IOException
*/
public static File saveUrlAs(String urlAddress, String filePath) {
File file = new File(filePath + urlAddress.substring(urlAddress.lastIndexOf("/"), urlAddress.indexOf("?")));
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
URL url = new URL(urlAddress);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
bis = new BufferedInputStream(is);
FileOutputStream fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
int b = 0;
byte[] byArr = new byte[1024 * 4];
while ((b = bis.read(byArr)) != -1) {
bos.write(byArr, 0, b);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (bis != null) {
bis.close();
}
if (bos != null) {
bos.close();
}
}
catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
public static void main(String[] args) throws IOException {
File file = saveUrlAs("文件下载路径地址", "C:/log");
List < WftTestEntity > wftTestEntityList = getCsvData("C:/log" + file.getName(), WftTestEntity.class);
for (WftTestEntity wftTestEntity : wftTestEntityList) {
System.err.println(wftTestEntity.toString());
}
}
}
实体类简易对象
public class Pojo implements Serializable {
private static final long serialVersionUID = 1L;
@CsvBindByPosition(position = 0)
@CsvBindByName(column = "订单号")
private String test1;
@CsvBindByPosition(position = 1)
@CsvBindByName(column = "开始时间")
private String test2;
@CsvBindByPosition(position = 2)
@CsvBindByName(column = "结束时间")
private String test3;
public String getTest1() {
return test1;
}
public void setTest1(String test1) {
this.test1 = test1;
}
public String getTest2() {
return test2;
}
public void setTest2(String test2) {
this.test2 = test2;
}
public String getTest3() {
return test3;
}
public void setTest3(String test3) {
this.test3 = test3;
}
}
希望能帮助到小伙伴们!!!!