Java что это за папка
Перейти к содержимому

Java что это за папка

  • автор:

Добрый день,я начинающий изучать java,нужна ваша помощь)

Решаю задачу : Имеется корневая папка. В этой папке могут находиться текстовые файлы, а также другие папки. В других папках также могут находится текстовые файлы и папки (уровень вложенности может оказаться любым). Написать на java программу, которая находит все текстовые файлы, отсортировать их по имени и склеить содержимое в один текстовый файл. Написал класс для поиска текстовых файлов

import java.io.*; import java.util.*; public class Main1 < private static ArrayListlistWithFileNames = new ArrayList<>(); public static int content; public static void main(String[] args) throws IOException < getListFiles("C:\\backet"); for (File fil: listWithFileNames) < String res = fil.getName(); if (res.contains(".txt")) < try (FileReader reader = new FileReader(fil)) < // читаем посимвольно while ((content = reader.read()) != -1) < //System.out.print((char)content); >> catch (IOException ex) < System.out.println(ex.getMessage()); >// System.out.println(fil.getName()); > > //Записываем в файл try (FileWriter writer = new FileWriter("C:\\backet\\global.txt", false)) < writer.write((char) content); // запись по символам writer.append('\n'); writer.append('E'); writer.flush(); writer.close(); System.out.println("Запись прошла успешно"); >catch (IOException ex) < System.out.println(ex.getMessage()); >> public static void getListFiles(String str) < File f = new File(str); for (File s: f.listFiles()) < if (s.isFile()) < listWithFileNames.add(s); >else if (s.isDirectory()) < getListFiles(s.getAbsolutePath()); >> > > 

Не работает запись в файл Не пойму как отсортировать ArrayList listWithFileNames
И дальше завис,прошу помощи,подскажите пожалуйста как можно реализовать И если можете подскажите как оформить код чтобы выглядел достойно
Спасибо)))

Отслеживать
33.1k 2 2 золотых знака 33 33 серебряных знака 63 63 бронзовых знака
задан 17 фев 2018 в 20:31
Алексей Кочерев Алексей Кочерев

Тут вам нужна рекурсия. Пишите метод, итерирующий по текущему каталогу. Все текстовые файлы складываете в лист, а для каталогов рекурсивно вызываете этот же метод. После нахождения всех необходимых файлов в простом цикле сливаете их в один.

17 фев 2018 в 22:09

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Попробуйте что-то вроде этого. Для сортировки используется класс-компаратор. Он добавлен ниже. В нем можно описать любую логику сортировки элементов коллекции на ваше усмотрение. Кроме того, старайтесь писать простые короткие методы. Их легко читать и достаточно легко отладить работу. А еще Java 8 дает возможность использовать лямбды и стримы. В некоторых случаях это облегчает жизнь. Например, с помощью функционального интерфейса FilenameFilter очень легко создать фильтр для файлов. Я использую рекурсивный обход папок, полагаю, что для данной задачи он оптимален. Вы можете решить задачу без рекурсии, но метод в любом случае станет сложнее.

import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.Serializable; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; public class Main1 < public static void main(String[] args) throws IOException < String directoryName = "C:\\backet"; String resultFileName = "C:\\backet\\global.txt"; FilenameFilter txtFilter = (File dir, String name) ->< return (new File(dir.getAbsolutePath()+File.separator+name).isDirectory()) || name.toLowerCase().endsWith(".txt"); >; List textFileNameList = getFileName(new File(directoryName), new ArrayList<>(), txtFilter); Collections.sort(textFileNameList, new SortFileName()); String resultText = fileWriter(textFileNameList, Charset.forName("cp1251")); //may be "UTF-8" or else fileWriter(resultFileName, resultText); > public static List getFileName(File directory, List fileNameList, FilenameFilter txtFilter) < for (File file : directory.listFiles(txtFilter)) < if (file.isDirectory()) getFileName(file, fileNameList, txtFilter); else fileNameList.add(file); >return fileNameList; > public static String fileWriter(List textFileNameList, Charset charset) < final StringBuilder allText = new StringBuilder(); textFileNameList.forEach((file) -> < try < Files.lines(Paths.get(file.getAbsolutePath()), charset). forEach((t) ->); > catch (IOException ex) < Logger.getLogger(Main1.class.getName()).log(Level.SEVERE, null, ex); >>); return allText.toString(); > public static boolean fileWriter(String fileName, String text) throws IOException < try (BufferedOutputStream bof = new BufferedOutputStream(new FileOutputStream(fileName))) < bof.write(text.getBytes()); >catch (IOException e) < return false; >return true; > > class SortFileName implements Serializable, Comparator < private static final long serialVersionUID = -5657490615422814108L; @Override public int compare(File file1, File file2) < return file1.getName().compareTo(file2.getName()); >> 

.oracle_jre_usage что это за папка?

Всем привет. Будем ребята сегодня разговаривать о такой папке как .oracle_jre_usage — я постараюсь узнать максимум информации и вам тут все напишу. В общем отправился я в интернет.. искал инфу, искал, и вот что выяснил. Значит на одном сайте, это сервис вопросов и ответов, так вот там один чел спросил что за папка .oracle_jre_usage и ему сказали что это Java апплеты Oracle. Вы тут можете спросить, но что такое апплет? Это программа, которая не может работать без виртуальной машины Java (JVM). Примерно как-то так

Но я стал еще искать инфу по поводу папки .oracle_jre_usage и вот узнал, что в этой папке может быть файл с расширением timestamp. Вот у одного чела в папке был файл 48ac84126bcac2aa.timestamp, хотя расширение вроде как означает временной штамп.. ну мне так показалось…

Обычно папка создается вот в этом месте:

Так, а вот на зарубежном одном сайте нашел инфу что папка .oracle_jre_usage нужна для Java Usage Tracker.

Так ребят, вроде докопался. Значит есть такое как свойства отслеживания Java. И вот это одно из свойств:

Это свойство включает или отключает отслеживание времени последнего использования. Вроде имеется ввиду время, когда JRE использовался для апплета. В общем не совсем понятно, но самое главное не это, а то, что это свойство создает файл в одном из следующих мест (это зависит от операционки):

Правда тут нет такого расположения как C:\Users\Имя\, странно, но может второй вариант это и есть это расположение? Просто папка \Имя\ как раз и похоже на user.home, ибо это личная пользовательская папка, если можно так сказать…

В общем ребята, вот вам ссылка где можно прочитать о предназначении папки (но все по-английски, если что правой кнопкой и там есть пункт Перевести, это в Хроме):

Чтобы легче найти инфу, то там на странице нажмите Ctrl + F и вставьте .oracle_ и потом нажимайте F3 и сразу увидите.

Ну а вот и пример как эта папка выглядит:

Ну а вот что может быть внутри — один файлик с расширением timestamp:

И даже в Windows 10 эта папка может быть:

Теперь по поводу удаления. Нет, я не знаю можно ли удалить, хотя читал что один чел удалял и все было норм. Все равно я советую сделать вот что — не удалять папку, а переименовать, но так, чтобы сохранилось оригинальное имя. Например просто добавьте что-то в конце и потом если будут траблы, то это что-то уберете. Например было .oracle_jre_usage, а вы переименуйте в .oracle_jre_usage_test и все, потом если что, то _test уберете. Я так всегда делаю. Если не захочет переименоваться, будет писать типа файлы в этой папке используются, то даже не знаю что сказать, может папка и нужная.. а можно тогда скачать утилиту Unlocker, и ней переименовать папку.. но это уже совсем другая история..

Ну вот на этом и все ребята! Удачи вам и будьте счастливы!!

Что за папка .swt Что это за папка и можно ли её удалять?

НЕТ
Standard Widget Toolkit, или SWT (произносится «свит») — библиотека с открытым исходным кодом для разработки графических интерфейсов пользователя на языке Java.

Разработана фондом Eclipse, лицензируется под Eclipse Public License, одной из лицензий открытого ПО.

SWT не является самостоятельной графической библиотекой, а представляет собой кросс-платформенную оболочку для графических библиотек конкретных платформ, например, под Linux SWT использует библиотеку Gtk+. SWT написана на стандартной Java и получает доступ к OS-специфичным библиотекам через Java Native Interface, который рассматривается в качестве сильного средства, несмотря на то, что это не является чистой Java.

SWT — альтернатива AWT и Swing (Sun Microsystems) для разработчиков, желающих получить привычный внешний вид программы в данной операционной системе. Использование SWT делает Java-приложение более эффективным, но снижает независимость от операционной системы и оборудования, требует ручного освобождения ресурсов и в некоторой степени нарушает Sun-концепцию платформы Java.

ВикторинЗнаток (373) 8 лет назад
Михаил ХолодковЗнаток (304) 3 года назад
эту папку создают многие программы например фабрика форматов
Остальные ответы
нельзя винду придется переустанавливать
ВикторинЗнаток (373) 8 лет назад
Михаил ХолодковЗнаток (304) 3 года назад
Всегда удаляю свит так как может быть вирус в этой папке, это не системная папка всего лишь ява

Если удалить не представляется возможным, но это неудаляемое мешается в компьютере, то если не знаешь что и как делать, с этим, я допустим просто, тогда восстанавливаю, при помощи программы восстановления, свой компьютер на то его время, состояние, в которое эта программа ещё не была на нём установлена, и тогда она тем самым пропадает, в «прошлом», да и всё, потом же, когда пройдёт некоторое время, она сама собой в этом случае, из моего компьютера уже полностью и исчезает, если я ей больше не стараюсь пользоваться.

Олег МелшПрофи (883) 7 лет назад
Чайка че то обклевалась и че то она теперь зеленая.

И почему же нельзя удалять папку swt. ? Это не системная папка. Когда установил винду то в папке пользователя лишних папок нет. Программе которой нужна эта папка для работы то она снова появится. Это если установить эмулятор андроид то появятся папки для работы программы, если их удалить эмулятор снова их создаст.

Назначение папки META-INF в Java

При работе с проектами на Java часто встречается папка под названием META-INF. В ней содержатся различные метафайлы, которые играют важную роль в функционировании приложения. Рассмотрим более подробно, какую функцию выполняет данная папка и что в ней может находиться.

В общем случае, папка META-INF используется для хранения метаданных, которые касаются всего приложения в целом. Эти данные не относятся непосредственно к коду, но представляют собой важную информацию для работы Java-приложения.

В папке META-INF, как правило, могут находиться следующие файлы:

  • MANIFEST.MF — основной файл, который содержит информацию о приложении и его компонентах. В нем указывается версия Java, используемая для компиляции приложения, а также могут быть указаны основные классы приложения.
  • pom.xml и pom.properties — файлы, которые используются в Maven-проектах. Они содержат информацию о проекте, его зависимостях и другие настройки.
  • INDEX.LIST — файл, который содержит информацию о всех классах в JAR-файле, что позволяет ускорить загрузку классов.
  • Файлы, связанные с сервисами, такие как services/com.example.MyService , которые используются для указания реализаций интерфейсов.

Таким образом, папка META-INF играет важную роль в работе Java-приложений, храня в себе метаданные, которые используются для настройки и функционирования приложения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *