2014-05-20 14 views
-1

我不得不改變我的基本應用到線程 我的應用程序的行爲改變正常的應用在Java中

  1. 從文件夾中讀取文件
  2. 通過,如果其他條件從文件
  3. 獲取擴展到線程檢查它是否屬於(doc,ppt,pptx)&執行操作
  4. 處理後將從步驟1開始。

你能告訴我如何着手,因爲我是新來的線程

我不需要整個代碼,我只需要要遵循的步驟 (如在哪些領域,我可以使用線程)提前

感謝

+7

在此處發佈您的相關代碼。 –

+1

爲什麼你必須使用線程?這個問題可能是I/O綁定而不是CPU綁定。 –

+0

通過線程我可以隔離和加速過程 – user3359059

回答

0

我早就做了這樣的事情。使用線程將jpeg,pdf,png,mp3文件排序到不同的文件夾。我使用神奇數量的文件來識別,而不是使用擴展名。

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStreamReader; 

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/** 
* 
* @author Zac 
*/ 
public class Sorting extends Thread{ 
    private static final int MAGIC_PNG[] = new int[] { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a }; 
    private static final int MAGIC_JPG[] = new int[] { 0xFF, 0xD8, 0xFF }; 
    private static final int MAGIC_PDF[] = new int[] { 0x25, 0x50, 0x44, 0x46 }; 
    private static final int MAGIC_MP3[] = new int[] { 0x49, 0x44, 0x33 }; 
    private String stagingDirectory,targetDirectory,preferenceFileDir; 
    private File thePrefs; 
    public Sorting(){ 

     preferenceFileDir = System.getProperty("user.home"); 
     thePrefs = new File(preferenceFileDir+"/Staging/prefs.txt"); 
    } 

    private static boolean isPng(File filename) throws Exception { 
     FileInputStream ins = new FileInputStream(filename); 
     try { 
      for(int i = 0; i < MAGIC_PNG.length; ++i) { 
       if(ins.read() != MAGIC_PNG[i]) { 
        return false; 
       } 
      } 
      return true; 
     } finally { 
      ins.close(); 
     } 
    } 
    private static boolean isJpg(File filename) throws Exception { 
     FileInputStream ins = new FileInputStream(filename); 
     try { 
      for(int i = 0; i < MAGIC_JPG.length; ++i) { 
       if(ins.read() != MAGIC_JPG[i]) { 
        return false; 
       } 
      } 
      return true; 
     } finally { 
      ins.close(); 
     } 
    } 
    private static boolean isMp3(File filename) throws Exception { 
     FileInputStream ins = new FileInputStream(filename); 
     try { 
      for(int i = 0; i < MAGIC_MP3.length; ++i) { 
       if(ins.read() != MAGIC_MP3[i]) { 
        return false; 
       } 
      } 
      return true; 
     } finally { 
      ins.close(); 
     } 
    } 
    private static boolean isPdf(File filename) throws Exception { 
     FileInputStream ins = new FileInputStream(filename); 
     try { 
      for(int i = 0; i < MAGIC_PDF.length; ++i) { 
       if(ins.read() != MAGIC_PDF[i]) { 
        return false; 
       } 
      } 
      return true; 
     } finally { 
      ins.close(); 
     } 
    } 
    private void getPreference(){ 
     FileInputStream fis = null; 
     try{ 
      fis = new FileInputStream(thePrefs); 
      BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 
      stagingDirectory= br.readLine(); 
      targetDirectory = br.readLine(); 
     } 
     catch(Exception e){ 

     } 
    } 
    public void run() { 
     //System.out.print("in run \n"); 
     int len; 
     getPreference(); 
     File stDir = new File(stagingDirectory); 
     File[] listOfFiles = stDir.listFiles(); 
     //System.out.print(listOfFiles); 
     if(listOfFiles == null) 
      len =0; 
     else 
      len = listOfFiles.length; 
     try{ 
      while(true){ 
       System.out.println(len); 
      for(int i = 0;i<len;i++){ 
       if(isJpg(listOfFiles[i])){ 
        System.out.println(listOfFiles[i].getName()+ " is jpeg"); 
        listOfFiles[i].renameTo(new File(targetDirectory+"/jpeg/"+listOfFiles[i].getName()+".jpeg")); 
       } 
       else if(isPdf(listOfFiles[i])){ 
        System.out.println(listOfFiles[i].getName()+ " is pdf"); 
        listOfFiles[i].renameTo(new File(targetDirectory+"/pdf/"+listOfFiles[i].getName()+".pdf")); 
       } 
       else if(isMp3(listOfFiles[i])){ 
        System.out.println(listOfFiles[i].getName()+ " is mp3"); 
        listOfFiles[i].renameTo(new File(targetDirectory+"/mp3/"+listOfFiles[i].getName()+".mp3")); 
       } 
       else if(isPng(listOfFiles[i])){ 
        System.out.println(listOfFiles[i].getName()+ " is png"); 
        listOfFiles[i].renameTo(new File(targetDirectory+"/png/"+listOfFiles[i].getName()+".png")); 
       } 
      } 
      listOfFiles = stDir.listFiles(); 
      len = listOfFiles.length; 
      Thread.sleep(3000);//sleeps for 3 seconds 
      } 
     }catch(Exception e){ 
      System.out.println("interrupted"+e); 
     } 
    } 
} 

在我public static void main(String[] args)

obj= new Sorting(); 
obj.start(); //calls the run method 

這裏的GitHub的鏈接項目。

Sorting out files using java

希望它有幫助。項目在netbeans/java中完成1.7