Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mail.lenka949;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.Future;
- import java.util.concurrent.FutureTask;
- public class FindFile {
- private String directory;
- private String file;
- private int threadNumber;
- public FindFile() {
- super();
- }
- public FindFile(String directory, String file) {
- super();
- this.directory = directory;
- this.file = file;
- this.threadNumber = 1;
- }
- public FindFile(String directory, String file, int threadNumber) {
- super();
- this.directory = directory;
- this.file = file;
- this.threadNumber = threadNumber;
- }
- public String getDirectory() {
- return directory;
- }
- public void setDirectory(String directory) {
- this.directory = directory;
- }
- public String getFile() {
- return file;
- }
- public void setFile(String file) {
- this.file = file;
- }
- private boolean isDirectoryExist() {
- File file = new File(directory);
- if (!file.exists()) {
- System.out.println("File source \"" + file.getName() + "\" is not a exists");
- return false;
- }
- if (!file.isDirectory()) {
- System.out.println("File source \"" + file.getName() + "\" is not a directory");
- return false;
- }
- return true;
- }
- public void fileSearch() {
- if (!isDirectoryExist()) {
- return;
- }
- File fileDir = new File(directory);
- File[] filesList = getFilesList(fileDir);
- if (filesList.length == 0) {
- System.out.println("File source \"" + directory + "\" is empty");
- return;
- }
- ArrayList<Future<String>> result = new ArrayList<>();
- int countTread = threadNumber;
- if (threadNumber > filesList.length) {
- countTread = filesList.length;
- }
- for (int i = 0; i < countTread; i++) {
- int size = filesList.length / countTread;
- int begin = size * i;
- int end = ((i + 1) * size);
- if ((filesList.length - end) < size) {
- end = filesList.length;
- }
- File[] arrayToSearch = Arrays.copyOfRange(filesList, begin, end);
- FutureTask<String> res = new FutureTask<>(new SearchThread(arrayToSearch, file));
- result.add(res);
- Thread thread = new Thread(res);
- thread.start();
- }
- for (Future<String> future : result) {
- try {
- System.out.println(future.get());
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
- System.out.println("Search completed");
- }
- public File[] getFilesList(File directory) {
- File[] fileList = directory.listFiles();
- for (File file : fileList) {
- if (file.isDirectory()) {
- File[] filesDir = getFilesList(file);
- fileList = Arrays.copyOf(fileList, fileList.length + filesDir.length);
- System.arraycopy(filesDir, 0, fileList, fileList.length - filesDir.length, filesDir.length);
- }
- }
- return fileList;
- }
- @Override
- public String toString() {
- return "FindFile [directory=" + directory + ", file=" + file + ", threadNumber=" + threadNumber + "]";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement