From b7e46d5ef68f8a1fff5ec5e08bdafca361982b58 Mon Sep 17 00:00:00 2001 From: Andrey Sh Date: Mon, 8 Feb 2021 09:53:04 +0300 Subject: [PATCH 1/2] =?UTF-8?q?20=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fileRepository/copy/TestFileToCopy.txt | 4 + java-data-handling-template.iml | 23 ++++++ pom.xml | 4 +- .../rd/online/repository/FileRepository.java | 9 ++- .../repository/SimpleFileRepository.java | 78 +++++++++++++++++-- .../izh/rd/online/service/RegExpService.java | 7 +- .../service/SimpleBigNumbersService.java | 25 +++++- .../rd/online/service/SimpleDateService.java | 26 +++++-- .../online/service/SimpleRegExpService.java | 40 +++++++++- .../rd/online/service/SimpleTextService.java | 34 ++++++-- src/main/resources/sensitive_data2.txt | 1 + .../resources/testDirCreateFile/newFile.txt | 1 + .../izh/rd/online/FileRepositoryTest.java | 14 ++-- .../epam/izh/rd/online/RegExpServiceTest.java | 7 +- 14 files changed, 233 insertions(+), 40 deletions(-) create mode 100644 fileRepository/copy/TestFileToCopy.txt create mode 100644 java-data-handling-template.iml create mode 100644 src/main/resources/sensitive_data2.txt create mode 100644 src/main/resources/testDirCreateFile/newFile.txt diff --git a/fileRepository/copy/TestFileToCopy.txt b/fileRepository/copy/TestFileToCopy.txt new file mode 100644 index 00000000..e4c32287 --- /dev/null +++ b/fileRepository/copy/TestFileToCopy.txt @@ -0,0 +1,4 @@ +test +1 +2 +текст \ No newline at end of file diff --git a/java-data-handling-template.iml b/java-data-handling-template.iml new file mode 100644 index 00000000..e5f71190 --- /dev/null +++ b/java-data-handling-template.iml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d02d643e..90de165a 100644 --- a/pom.xml +++ b/pom.xml @@ -33,8 +33,8 @@ org.apache.maven.plugins maven-compiler-plugin - ${java.version} - ${java.version} + 9 + 9 diff --git a/src/main/java/com/epam/izh/rd/online/repository/FileRepository.java b/src/main/java/com/epam/izh/rd/online/repository/FileRepository.java index 870e645f..35818371 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/FileRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/FileRepository.java @@ -1,5 +1,8 @@ package com.epam.izh.rd.online.repository; +import java.io.FileNotFoundException; +import java.io.IOException; + public interface FileRepository { @@ -7,10 +10,10 @@ public interface FileRepository { long countDirsInDirectory(String path); - void copyTXTFiles(String from, String to); + void copyTXTFiles(String from, String to) throws IOException; - boolean createFile(String path, String name); + boolean createFile(String path, String name) throws IOException; - String readFileFromResources(String fileName); + String readFileFromResources(String fileName) throws IOException; } diff --git a/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java b/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java index 1783b845..026aae96 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java @@ -1,5 +1,12 @@ package com.epam.izh.rd.online.repository; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + + + public class SimpleFileRepository implements FileRepository { /** @@ -10,9 +17,23 @@ public class SimpleFileRepository implements FileRepository { */ @Override public long countFilesInDirectory(String path) { - return 0; + //String absoluteFilePath = "C:/java-data-handling-template/src/main/resources/"+path; + long filesThisDir=0; + File f = new File(path); + File[] files = f.listFiles(); + for (File item : files) { + if (item.isFile()) { + filesThisDir++; + } + if (item.isDirectory()) { + filesThisDir += countFilesInDirectory(item.getAbsolutePath()); + } + } + return filesThisDir; + } + /** * Метод рекурсивно подсчитывает количество папок в директории, считая корень * @@ -21,7 +42,17 @@ public long countFilesInDirectory(String path) { */ @Override public long countDirsInDirectory(String path) { - return 0; + File file = new File (path); + File[] files = file.listFiles(); + long DirsThisDir = 1; + + for(File item: files) + { + if (item.isDirectory()) { + DirsThisDir += countDirsInDirectory(item.getAbsolutePath()); + } + } + return DirsThisDir; } /** @@ -31,8 +62,20 @@ public long countDirsInDirectory(String path) { * @param to путь куда */ @Override - public void copyTXTFiles(String from, String to) { - return; + public void copyTXTFiles(String from, String to) throws IOException { + File fileFrom = new File(from); + File fileTo = new File(to); + Path pathFrom = Paths.get(fileFrom.getParent()); + Path pathTo = Paths.get(fileTo.getParent()); + + if (!Files.exists(pathTo)) { + Files.createDirectories(pathTo); + } + for(File item: pathFrom.toFile().listFiles()){ + if(item.getAbsolutePath().endsWith(".txt")) { + Files.copy(fileFrom.toPath(), fileTo.toPath()); + } + } } /** @@ -43,8 +86,17 @@ public void copyTXTFiles(String from, String to) { * @return был ли создан файл */ @Override - public boolean createFile(String path, String name) { - return false; + public boolean createFile(String path, String name) throws IOException { + File file = new File(path+"/"+name); + Path dir = Paths.get(file.getParent()); + if (!Files.exists(dir)) { + Files.createDirectory(dir); + } + if (!file.exists()) { + file.createNewFile(); + return true; + } + return file.exists(); } /** @@ -54,7 +106,17 @@ public boolean createFile(String path, String name) { * @return контент */ @Override - public String readFileFromResources(String fileName) { - return null; + public String readFileFromResources(String fileName) throws IOException { + String absoluteFilePath = "C:/java-data-handling-template/src/main/resources/" + fileName; + String content = new String(); + FileReader fileReader = new FileReader(absoluteFilePath); + BufferedReader buffReader = new BufferedReader(fileReader); + try { + while (buffReader.ready()) { + content = buffReader.readLine(); + } + }catch (IOException e){System.out.println(e.getMessage());} + buffReader.close(); + return content; } } diff --git a/src/main/java/com/epam/izh/rd/online/service/RegExpService.java b/src/main/java/com/epam/izh/rd/online/service/RegExpService.java index 7decea81..3da4e77d 100644 --- a/src/main/java/com/epam/izh/rd/online/service/RegExpService.java +++ b/src/main/java/com/epam/izh/rd/online/service/RegExpService.java @@ -1,8 +1,11 @@ package com.epam.izh.rd.online.service; +import java.io.FileNotFoundException; +import java.io.IOException; + public interface RegExpService { - String maskSensitiveData(); + String maskSensitiveData() throws IOException; - String replacePlaceholders(double paymentAmount, double balance); + String replacePlaceholders(double paymentAmount, double balance) throws IOException; } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java index a94c7bba..a1ce46f8 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java @@ -2,6 +2,7 @@ import java.math.BigDecimal; import java.math.BigInteger; +import java.math.RoundingMode; public class SimpleBigNumbersService implements BigNumbersService { @@ -13,7 +14,9 @@ public class SimpleBigNumbersService implements BigNumbersService { */ @Override public BigDecimal getPrecisionNumber(int a, int b, int range) { - return null; + BigDecimal firstNumber = new BigDecimal(a); + BigDecimal secondNumber = new BigDecimal(b); + return firstNumber.divide(secondNumber, range, RoundingMode.HALF_UP); } /** @@ -24,6 +27,24 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) { */ @Override public BigInteger getPrimaryNumber(int range) { - return null; + Integer[] arr = new Integer[range+1]; + int numberArr = 1; + int i = 3; + boolean isPrime = true; + while (arr[range] == null){ + for (int j = 2; j <= i/j; j++){ + if (i % j == 0 ) { + isPrime = false; + } + + } + if (isPrime){ + arr[numberArr] = i ; + numberArr++; + } + i++; + isPrime = true; + } + return BigInteger.valueOf(arr[range]); } } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java index 70d64dfd..ad13cef1 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java @@ -4,6 +4,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; + public class SimpleDateService implements DateService { /** @@ -14,7 +15,9 @@ public class SimpleDateService implements DateService { */ @Override public String parseDate(LocalDate localDate) { - return null; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + String localDate1 = localDate.format(formatter); + return localDate1; } /** @@ -25,7 +28,9 @@ public String parseDate(LocalDate localDate) { */ @Override public LocalDateTime parseString(String string) { - return null; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + LocalDateTime dateTime = LocalDateTime.parse(string, formatter); + return dateTime; } /** @@ -37,7 +42,7 @@ public LocalDateTime parseString(String string) { */ @Override public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) { - return null; + return localDate.format(formatter); } /** @@ -47,7 +52,14 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma */ @Override public long getNextLeapYear() { - return 0; + LocalDate temp = LocalDate.now(); + long year = temp.getYear() + 1; + while(true) { + if ((year % 400 == 0 && year % 100 == 0) || (year % 4 == 0 && year % 100 > 0)) { + return year; + } + year++; + } } /** @@ -57,7 +69,11 @@ public long getNextLeapYear() { */ @Override public long getSecondsInYear(int year) { - return 0; + if ((year % 400 == 0 && year % 100 == 0) || (year % 4 == 0 && year % 100 > 0)) { + return 366*24*60*60; + } else { + return 365*24*60*60; + } } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java index b6eff56b..38f0dc47 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java @@ -1,5 +1,10 @@ package com.epam.izh.rd.online.service; +import java.io.*; +import java.text.DecimalFormat; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class SimpleRegExpService implements RegExpService { /** @@ -10,8 +15,22 @@ public class SimpleRegExpService implements RegExpService { * @return обработанный текст */ @Override - public String maskSensitiveData() { - return null; + public String maskSensitiveData() throws IOException { + BufferedReader br = new BufferedReader(new FileReader("C:/java-data-handling-template/src/main/resources/sensitive_data.txt")); + String content = br.readLine(); + br.close(); + + Pattern pattern = Pattern.compile("\\d{4} \\d{4} \\d{4} \\d{4}"); + Matcher matcher = pattern.matcher(content); + + StringBuffer sbNewContent = new StringBuffer(content.length()); + String sNewContent = ""; + while (matcher.find()){ + sNewContent = matcher.group().substring(0,4) + " **** " + "**** " + matcher.group().substring(15,19); + matcher.appendReplacement(sbNewContent, sNewContent); + } + matcher.appendTail(sbNewContent); + return sbNewContent.toString(); } /** @@ -21,7 +40,20 @@ public String maskSensitiveData() { * @return обработанный текст */ @Override - public String replacePlaceholders(double paymentAmount, double balance) { - return null; + public String replacePlaceholders(double paymentAmount, double balance) throws IOException { + BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/java-data-handling-template/src/main/resources/sensitive_data.txt")); + String content = bufferedReader.readLine(); + bufferedReader.close(); + String sPaymentAmount = DecimalFormat.getNumberInstance().format(paymentAmount); + String sBalance = DecimalFormat.getInstance().format(balance); + + Pattern pPayment = Pattern.compile("\\$\\{payment_amount\\}"); + Matcher mPayment = pPayment.matcher(content); + content = mPayment.replaceAll(sPaymentAmount); + + Pattern pBalance = Pattern.compile("\\$\\{balance\\}"); + Matcher mBalance = pBalance.matcher(content); + content = mBalance.replaceAll(sBalance); + return content; } } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java index 68951fbe..2dbb0bbd 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java @@ -13,7 +13,16 @@ public class SimpleTextService implements TextService { */ @Override public String removeString(String base, String remove) { - return null; //TODO + StringBuilder sb1 = new StringBuilder(base); + StringBuilder sb2 = new StringBuilder(remove); + + while (sb1.indexOf(remove)>0) { + sb1 = sb1.delete(sb1.indexOf(remove),sb1.indexOf(remove)+sb2.length()); + + } + + + return sb1.toString(); } /** @@ -24,7 +33,7 @@ public String removeString(String base, String remove) { */ @Override public boolean isQuestionString(String text) { - return false; //TODO + return text.endsWith("?"); } /** @@ -35,7 +44,11 @@ public boolean isQuestionString(String text) { */ @Override public String concatenate(String... elements) { - return null; //TODO + StringBuilder sb1 = new StringBuilder(elements[0]); + for(int i = 1; i < elements.length; i++) { + sb1.append(elements[i]); + } + return sb1.toString(); } /** @@ -47,7 +60,14 @@ public String concatenate(String... elements) { */ @Override public String toJumpCase(String text) { - return null; //TODO + StringBuilder sb1 = new StringBuilder(text); + for(int i = 0; i < sb1.length(); i+=2) { + sb1.setCharAt(i, Character.toLowerCase(sb1.charAt(i))); + } + for(int i = 1; i < sb1.length(); i+=2) { + sb1.setCharAt(i, Character.toUpperCase(sb1.charAt(i))); + } + return sb1.toString(); } /** @@ -59,6 +79,10 @@ public String toJumpCase(String text) { */ @Override public boolean isPalindrome(String string) { - return false; //TODO + String workCopy = string.replaceAll(" ",""); + StringBuffer reversCopy = new StringBuffer(new StringBuffer(workCopy).reverse()); + String str = reversCopy.toString(); + return str.equalsIgnoreCase(workCopy); + } } diff --git a/src/main/resources/sensitive_data2.txt b/src/main/resources/sensitive_data2.txt new file mode 100644 index 00000000..e426f557 --- /dev/null +++ b/src/main/resources/sensitive_data2.txt @@ -0,0 +1 @@ +Вчера вечером со счета номер 4301 0234 2145 2140 был совершен перевод на счет 5042 2012 0532 2043 в размере 1.0 рублей. На счету осталось 2.0 рублей \ No newline at end of file diff --git a/src/main/resources/testDirCreateFile/newFile.txt b/src/main/resources/testDirCreateFile/newFile.txt new file mode 100644 index 00000000..f771248c --- /dev/null +++ b/src/main/resources/testDirCreateFile/newFile.txt @@ -0,0 +1 @@ +sdfghj \ No newline at end of file diff --git a/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java b/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java index d581bac2..2da8208a 100644 --- a/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java +++ b/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java @@ -20,11 +20,11 @@ public class FileRepositoryTest { - private static final String TEST_DIR_COUNT_PATH = "testDirCountFiles"; - private static final String TEST_DIR_CREATE_PATH = "testDirCreateFile"; + private static final String TEST_DIR_COUNT_PATH = "C:/java-data-handling-template/src/main/resources/testDirCountFiles"; + private static final String TEST_DIR_CREATE_PATH = "C:/java-data-handling-template/src/main/resources/testDirCreateFile"; private static final String TEST_FILE_TO_CREATE = "newFile.txt"; - private static final String SOURCE_FILE = "fileRepository/source/TestFileToCopy.txt"; - private static final String COPY_FILE = "fileRepository/copy/TestFileToCopy.txt"; + private static final String SOURCE_FILE = "C:/java-data-handling-template/fileRepository/source/TestFileToCopy.txt"; + private static final String COPY_FILE = "C:/java-data-handling-template/fileRepository/copy/TestFileToCopy.txt"; private static FileRepository fileRepository; @@ -55,7 +55,7 @@ void testCountFilesInDirectory() { @Test @DisplayName("Тест метода FileRepository.copyTXTFiles(String from, String to)") - void testCopyTXTFiles() { + void testCopyTXTFiles() throws IOException { final File emptyFile = getFile(COPY_FILE); assertEquals("", emptyFile.getName()); fileRepository.copyTXTFiles(SOURCE_FILE, COPY_FILE); @@ -73,7 +73,7 @@ void testCopyTXTFiles() { @Test @DisplayName("Тест метода FileRepository.createFile(String path)") - void testCreateFile() { + void testCreateFile() throws IOException { fileRepository.createFile(TEST_DIR_CREATE_PATH, TEST_FILE_TO_CREATE); assertTrue(getFile(TEST_DIR_CREATE_PATH + "/" + TEST_FILE_TO_CREATE).exists()); @@ -81,7 +81,7 @@ void testCreateFile() { @Test @DisplayName("Тест метода FileRepository.readFileFromResources(String fileName)") - void testReadFileFromResources() { + void testReadFileFromResources() throws IOException { assertEquals("Ya-hoo!", fileRepository.readFileFromResources("readme.txt")); } diff --git a/src/test/java/com/epam/izh/rd/online/RegExpServiceTest.java b/src/test/java/com/epam/izh/rd/online/RegExpServiceTest.java index 0dd35e47..7973b00b 100644 --- a/src/test/java/com/epam/izh/rd/online/RegExpServiceTest.java +++ b/src/test/java/com/epam/izh/rd/online/RegExpServiceTest.java @@ -6,6 +6,9 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.io.FileNotFoundException; +import java.io.IOException; + import static org.junit.jupiter.api.Assertions.assertEquals; public class RegExpServiceTest { @@ -19,7 +22,7 @@ static void setup() { @Test @DisplayName("Тест метода RegExpService.maskSensitiveData()") - void testMaskSensitiveData() { + void testMaskSensitiveData() throws IOException { assertEquals("Вчера вечером со счета номер 4301 **** **** 2140 был совершен перевод на счет 5042 **** ****" + " 2043 в размере ${payment_amount} рублей. На счету осталось ${balance} рублей", regExpService.maskSensitiveData()); @@ -27,7 +30,7 @@ void testMaskSensitiveData() { @Test @DisplayName("Тест метода RegExpService.maskSensitiveData()") - void testGetPrecisionNumber() { + void testGetPrecisionNumber() throws IOException { assertEquals("Вчера вечером со счета номер 4301 0234 2145 2140 был совершен перевод на счет 5042 2012 0532 2043" + " в размере 1 рублей. На счету осталось 2 рублей", regExpService.replacePlaceholders(1, 2)); From faffcaf666322e182d1458bc4d3b0720398e5c7b Mon Sep 17 00:00:00 2001 From: Andrey Sh Date: Tue, 9 Feb 2021 01:44:40 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A0=D0=B5=D1=88=D0=B8=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=BA=D1=80?= =?UTF-8?q?=D0=BE=D0=BC=D0=B5=20createFile.=20=D1=84=D0=B0=D0=B9=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=B5=D1=82=D1=81=D1=8F,=20?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=82=D0=B5=D1=81=D1=82=20=D0=B2=D1=8B=D0=B4?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epam/izh/rd/online/repository/SimpleFileRepository.java | 4 ++-- .../com/epam/izh/rd/online/service/SimpleTextService.java | 3 +++ src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java b/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java index 026aae96..561f1b0d 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java @@ -17,7 +17,7 @@ public class SimpleFileRepository implements FileRepository { */ @Override public long countFilesInDirectory(String path) { - //String absoluteFilePath = "C:/java-data-handling-template/src/main/resources/"+path; + long filesThisDir=0; File f = new File(path); File[] files = f.listFiles(); @@ -87,7 +87,7 @@ public void copyTXTFiles(String from, String to) throws IOException { */ @Override public boolean createFile(String path, String name) throws IOException { - File file = new File(path+"/"+name); + File file = new File(path+"./"+name); Path dir = Paths.get(file.getParent()); if (!Files.exists(dir)) { Files.createDirectory(dir); diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java index 2dbb0bbd..048849df 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java @@ -79,6 +79,9 @@ public String toJumpCase(String text) { */ @Override public boolean isPalindrome(String string) { + if (string.equals("")){ + return false; + } String workCopy = string.replaceAll(" ",""); StringBuffer reversCopy = new StringBuffer(new StringBuffer(workCopy).reverse()); String str = reversCopy.toString(); diff --git a/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java b/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java index 2da8208a..de4c58f8 100644 --- a/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java +++ b/src/test/java/com/epam/izh/rd/online/FileRepositoryTest.java @@ -98,8 +98,10 @@ private String readLineByLineJava(String filePath) { } private File getFile(String path) { + File file = new File(path); ClassLoader classLoader = getClass().getClassLoader(); - URL resource = classLoader.getResource(path); + URL resource = classLoader.getResource(String.valueOf(file)); + if (resource != null) { return new File(resource.getFile()); }