我想通过url获取文件是属于图片、视频还是pdf文件怎么在上面的代码进行优化
时间: 2024-02-26 19:58:36 浏览: 89
根据您的需求,您可以使用一个工具类来获取文件的类型,然后再进行分类。以下是一个简单的示例代码:
```
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class FileTypeUtil {
public static FileType getType(InputStream inputStream) throws IOException {
byte[] bytes = new byte[10];
int read = inputStream.read(bytes, 0, bytes.length);
if (read == -1) {
throw new IOException("无法读取文件类型!");
}
if (bytes[0] == 'G' && bytes[1] == 'I' && bytes[2] == 'F') {
return FileType.GIF;
}
if (bytes[0] == 'P' && bytes[1] == 'N' && bytes[2] == 'G') {
return FileType.PNG;
}
if (bytes[0] == 0xFF && bytes[1] == 0xD8 && bytes[2] == 0xFF) {
return FileType.JPG;
}
if (bytes[0] == 'B' && bytes[1] == 'M') {
return FileType.BMP;
}
if (bytes[0] == 'T' && bytes[1] == 'I' && bytes[2] == 'F') {
return FileType.TIF;
}
if (bytes[0] == 'R' && bytes[1] == 'I' && bytes[2] == 'F') {
return FileType.RFT;
}
if (bytes[0] == 'D' && bytes[1] == 'W' && bytes[2] == 'G') {
return FileType.DWG;
}
if (bytes[0] == 0x38 && bytes[1] == 0x42 && bytes[2] == 0x50 && bytes[3] == 0x53) {
return FileType.PSD;
}
if (bytes[0] == '.' && bytes[1] == 'R' && bytes[2] == 'A' && bytes[3] == 'R') {
return FileType.RAR;
}
if (bytes[0] == 'R' && bytes[1] == 'a' && bytes[2] == 'r' && bytes[3] == '!') {
return FileType.RAR;
}
if (bytes[0] == 0x25 && bytes[1] == 0x50 && bytes[2] == 0x44 && bytes[3] == 0x46) {
return FileType.PDF;
}
if (bytes[0] == 0x52 && bytes[1] == 0x61 && bytes[2] == 0x72 && bytes[3] == 0x21) {
return FileType.RAR;
}
if (bytes[0] == 0x52 && bytes[1] == 0x61 && bytes[2] == 0x72 && bytes[3] == 0x21) {
return FileType.RAR;
}
if (bytes[0] == 0x52 && bytes[1] == 0x61 && bytes[2] == 0x72 && bytes[3] == 0x21) {
return FileType.RAR;
}
if (bytes[0] == 0x52 && bytes[1] == 0x61 && bytes[2] == 0x72 && bytes[3] == 0x21) {
return FileType.RAR;
}
if (bytes[0] == 0x52 && bytes[1] == 0x61 && bytes[2] == 0x72 && bytes[3] == 0x21) {
return FileType.RAR;
}
if (bytes[0] == 0x52 && bytes[1] == 0x61 && bytes[2] == 0x72 && bytes[3] == 0x21) {
return FileType.RAR;
}
return FileType.OTHER;
}
}
public enum FileType {
JPG, PNG, GIF, TIF, BMP, DWG, RFT, PSD, RAR, PDF, OTHER
}
```
然后,您可以在您的代码中使用该工具类获取文件类型:
```
public String getTypeName(String url) throws IOException {
try (InputStream inputStream = new URL(url).openStream()) {
FileType fileType = FileTypeUtil.getType(inputStream);
switch (fileType) {
case JPG:
case PNG:
case GIF:
case TIF:
case BMP:
case DWG:
case RFT:
case PSD:
return "type_img";
case RAR:
case PDF:
return "type_pdf";
default:
return "type_video";
}
} catch (IOException e) {
e.printStackTrace();
log.error("未找到对应的文件类型!");
throw e;
}
}
```
上面的代码将图片文件类型归类为 `type_img`,将视频文件类型归类为 `type_video`,将其他文件类型归类为 `type_pdf`。您可以根据您的实际需求修改它。
阅读全文