http://blog.csdn.net/harderxin/article/details/21162741
http://blog.csdn.net/harderxin/article/details/21162741?utm_source=tuicool&utm_medium=referral
1、獲得U盤根目錄,例如我們?nèi)∶鸘盤名稱為"測(cè)試U盤",一般插入U(xiǎn)盤后,在系統(tǒng)的H盤
- /**
- * 得到系統(tǒng)U盤根目錄
- */
- public String findURootPath(){
- FileSystemView sys = FileSystemView.getFileSystemView();
- //循環(huán)盤符
- File[] files = File.listRoots();
- for(File file:files){
- //得到系統(tǒng)中存在的C:\,D:\,E:\,F:\,H:\
- System.out.println("系統(tǒng)中存在的"+file.getPath());
- }
- File file = null;
- String path = null;
- for(int i = 0; i < files.length; i++) {
- //得到文字命名形式的盤符系統(tǒng) (C:)、軟件 (D:)、公司文檔 (E:)、測(cè)試U盤 (H:)
- System.out.println("得到文字命名形式的盤符"+sys.getSystemDisplayName(files[i]));
- if(sys.getSystemDisplayName(files[i]).contains("測(cè)試U盤")){
- file = files[i];
- break;
- }
- }
- if(file!=null){
- path = file.getPath();
- }
- return path;
- }
測(cè)試后獲得的U盤路徑為:H:\
2、獲得圖片頭文件信息和拍照時(shí)間
- /**
- * 獲取圖片頭文件信息,封裝為一個(gè)Map數(shù)據(jù)保存
- */
- public static Map<String,String> getImageInfo(File file){
- Map<String,String> map = new HashMap<String, String>();
- if(file!=null){
- try{
- Metadata metadata = JpegMetadataReader.readMetadata(file);
- ExifIFD0Directory exifIFD0Directory = metadata.getDirectory(ExifIFD0Directory.class);
- //獲得圖片頭文件信息
- map.put("software", exifIFD0Directory.getDescription(ExifIFD0Directory.TAG_SOFTWARE));
- ExifSubIFDDirectory subIFDDirectory = metadata.getDirectory(ExifSubIFDDirectory.class);
- //獲得圖片系統(tǒng)拍照時(shí)間
- map.put("time", subIFDDirectory.getDescription(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL));
- }catch (Exception e) {
- e.printStackTrace();
- }
- }
- return map;
- }
測(cè)試代碼:
- Map<String,String> map = getImageInfo(new File("F:\\test\\111.JPG"));
- System.out.println(map.get("software")+"--"+map.get("time"));
得到信息:2.3.6--2014:02:09 10:16:09,我們有些硬件拍照,有時(shí)候要與軟件相結(jié)合,這個(gè)時(shí)候,我們可以把信息放在圖片的頭文件信息中,方便我們軟件進(jìn)行處理!
3、獲取視頻頭文件信息,是將其轉(zhuǎn)為文件流的形式進(jìn)行讀取
- /**
- * 獲取頭文件信息--以文件流的形式讀取視頻文件,Byte數(shù)組獲取頭文件
- * 循環(huán)數(shù)組,轉(zhuǎn)換為char類型,解析得到頭文件
- * @param filepath
- * @throws IOException
- */
- public static String getFileHeadInfo(File file){
- try{
- FileInputStream fis = new FileInputStream(file);
- byte[] b = new byte[300];
- StringBuilder sb = new StringBuilder();
- fis.read(b,0,300);
- for (int i = 0; i < b.length; i++) {
- sb.append((char)(Integer.parseInt(b[i]+"")));
- }
- fis.close();
-
- String temp = sb.toString().toUpperCase();
- int offset = sb.indexOf("SQ");
- return temp.substring(offset, offset+50).trim();
- }catch(Exception e){
- e.printStackTrace();
- return null;
- }
- }
測(cè)試代碼:
- String result = getFileHeadInfo(new File("F:\\test\\151751.AVI"));
- System.out.println(result);
得到信息:
SQ909_5530900991_100000111220003,同理,當(dāng)我們視頻中有信息需要給我們軟件使用的時(shí)候,可以把信息放到視頻的頭文件信息中
3、獲取視頻時(shí)長(zhǎng)
- /**
- * 獲取視頻時(shí)長(zhǎng)
- */
- public static double getVideoTime(File file){
- double time = 0.0;
- Encoder encoder = new Encoder();
- try {
- MultimediaInfo m = encoder.getInfo(file);
- long ls = m.getDuration();
- time = Double.parseDouble(new DecimalFormat("#.00").format(ls/(1000*60.0)));
- return time;
- } catch (Exception e) {
- e.printStackTrace();
- return 0.0;
- }
- }
測(cè)試代碼:
- double d=getVideoTime(new File("F:\\test\\151751.AVI"));
- System.out.println("視頻時(shí)長(zhǎng)---"+d);
得到相應(yīng)的視頻時(shí)長(zhǎng)信息:視頻時(shí)長(zhǎng)---0.51
4、獲取文件在電腦盤符上的創(chuàng)建時(shí)間
- /**
- * 獲取文件在盤符中創(chuàng)建時(shí)間,指的是文件被移動(dòng)到指定文件下的時(shí)間
- * 例如一張圖片,我的拍攝時(shí)間為:2014-02-13 09:23:21
- * 當(dāng)我將其移動(dòng)到電腦上F:\\test盤符下的時(shí)間為:2014-03-20 19:35:28
- * 此方法返回的時(shí)間為:2014-03-20 19:35:28
- * @param file
- * @return
- */
- public static String getFileCreateDate(File file) {
- try {
- String filePath = file.getAbsolutePath();
- Process ls_proc = Runtime.getRuntime().exec("cmd.exe /c dir " + filePath + " /tc");
- BufferedReader br = new BufferedReader(new InputStreamReader(ls_proc.getInputStream()));
- for (int i = 0; i < 5; i++) {
- br.readLine();
- }
- String result = br.readLine();
- br.close();
- String[] array = result.split("\\s+");
- String date = array[0].replaceAll("/", "-");
- String time = array[1];
- return date.concat(" ").concat(time);
- } catch (Exception e) {
- return null;
- }
- }
測(cè)試相應(yīng)的文件,都可以得到相應(yīng)的時(shí)間:
- result = getFileCreateDate(new File("F:\\test\\book.txt"));
- result = getFileCreateDate(new File("F:\\test\\111.JPG"));
- System.out.println("文件創(chuàng)建時(shí)間為"+result);
得到信息:返回時(shí)間字符串:文件創(chuàng)建時(shí)間為2014-03-13 11:58
大家可以根據(jù)自己的業(yè)務(wù)需求,進(jìn)行相應(yīng)的功能操作!上面方法中有些類比如說(shuō):Encoder、MultimediaInfo、JpegMetadataReader、ExifIFD0Directory等需要第三方包的支持,大家可以到我的資源庫(kù)中進(jìn)行免費(fèi)下載:
http://download.csdn.net/detail/harderxin/7033579
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。