-1
我不得不改變我的基本應用到線程 我的應用程序的行爲改變正常的應用在Java中
- 從文件夾中讀取文件
- 通過,如果其他條件從文件
- 獲取擴展到線程檢查它是否屬於(doc,ppt,pptx)&執行操作
- 處理後將從步驟1開始。
你能告訴我如何着手,因爲我是新來的線程
我不需要整個代碼,我只需要要遵循的步驟 (如在哪些領域,我可以使用線程)提前
感謝
我不得不改變我的基本應用到線程 我的應用程序的行爲改變正常的應用在Java中
你能告訴我如何着手,因爲我是新來的線程
我不需要整個代碼,我只需要要遵循的步驟 (如在哪些領域,我可以使用線程)提前
感謝
我早就做了這樣的事情。使用線程將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的鏈接項目。
希望它有幫助。項目在netbeans/java中完成1.7
在此處發佈您的相關代碼。 –
爲什麼你必須使用線程?這個問題可能是I/O綁定而不是CPU綁定。 –
通過線程我可以隔離和加速過程 – user3359059