最近在做一个shp文件的解析,然后需要制定一个目录,然后要把获取到的file[]都放进去,然后返回.shp格式的文件进行一些操作。
然后发现了一个好用的工具 guava:
依赖包如下:
compile 'com.google.guava:guava:26.0-jre'
代码如下:
public static File searchShpFile(MultipartFile[] mpFile) {
File shpFile = null;
try {
File tmpDir = Files.createTempDir();
String rootPtah = tmpDir.getAbsolutePath();
//shape格式文件最少包含3个文件,他们的后缀是:.shp, .dbf, .shx,.prj。
Map<String,Object> fileNameMap = new HashMap();
for (MultipartFile f : mpFile) {
fileNameMap.put(f.getOriginalFilename().split("\\.")[1],null);
}
if(fileNameMap.containsKey("shp")&&fileNameMap.containsKey("dbf")&&fileNameMap.containsKey("shx")&&fileNameMap.containsKey("prj")){
for (MultipartFile f : mpFile) {
String gisFile = rootPtah
+ File.separator + f.getOriginalFilename();
FileInputStream input = (FileInputStream) f.getInputStream();
FileOutputStream output = new FileOutputStream(rootPtah
+ File.separator + f.getOriginalFilename());
byte[] bufferarray = new byte[1024 * 64];
int prereadlength;
while ((prereadlength = input.read(bufferarray)) != -1) {
output.write(bufferarray, 0, prereadlength);
}
if (f.getOriginalFilename().endsWith(".shp")) {
shpFile = new File(gisFile);
}
output.flush();
output.close();
input.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return shpFile;
}
解析完成之后,切记要删掉哦:
File shpFile = searchShpFile(file);
if(shpFile.getParentFile().exists()){
File files[] = shpFile.getParentFile().listFiles(); //声明目录下所有的文件 files[];
for(File gisFile : files){ //遍历目录下所有的文件
gisFile.delete();
}
shpFile.getParentFile().delete();
}