Working with paths

Move a file in java

Преимущества использования «Change destination folder java»

1. Удобство и гибкость

Использование «Change destination folder java» позволяет разработчикам задавать папку назначения для сохранения файлов программы. Это значительно упрощает и улучшает организацию, структуру и переносимость проекта. Разработчики могут свободно выбирать папку назначения в зависимости от конкретных требований и предпочтений.

2. Избегание конфликтов и ошибок

Изменение папки назначения в Java помогает избежать конфликтов и ошибок при сохранении файлов. Задавая явно путь до нужной папки, разработчики могут быть уверены, что файлы будут сохраняться в нужном месте и не будут перезаписываться или перемещаться по ошибке.

3. Удобство управления файлами проекта

«Change destination folder java» облегчает управление файлами проекта. Разработчики могут организовать файлы в папках в соответствии с логикой и структурой программы. Это упрощает поиск, отладку и поддержку кода. Также это позволяет легко добавлять, удалять и изменять файлы, не нарушая целостность и работу проекта.

4. Улучшение читаемости и портируемости кода

Явное указание папки назначения для сохранения файлов делает код более понятным и читаемым. Это упрощает работу с проектом и взаимодействие с другими разработчиками. Кроме того, использование «Change destination folder java» повышает портируемость кода, так как папка назначения может быть настроена для различных операционных систем и сред разработки.

5. Функциональность и расширяемость

Механизм «Change destination folder java» предоставляет множество возможностей для работы с файлами и папками. Разработчики могут использовать различные методы и функции для создания, перемещения, копирования и удаления файлов. Также возможна настройка и расширение функциональности в соответствии с конкретными требованиями и потребностями проекта.

В целом, использование «Change destination folder java» предоставляет множество преимуществ, описанных выше, и помогает разработчикам улучшить организацию и управление файлами проекта, избежать ошибок и конфликтов, повысить читаемость и портируемость кода, а также расширить функциональность и возможности работы с файлами и папками.

Возможные проблемы и их решения при изменении папки назначения Java

При изменении папки назначения в Java могут возникнуть некоторые проблемы. В данной статье будут рассмотрены некоторые из них и возможные решения.

1. Ошибка доступа

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

Решение: Проверьте права доступа к папке назначения, убедитесь, что у вас есть достаточные права для записи в нее. Если папка находится в системной области, попробуйте запустить программу с правами администратора.

2. Несуществующая папка

Еще одной возможной проблемой является выбор несуществующей папки в качестве папки назначения. Это может произойти в случае опечатки при указании пути или когда папка была удалена.

Решение: Проверьте правильность указанного пути к папке назначения. Убедитесь, что папка существует. Если папка была удалена, создайте ее заново или выберите другую папку.

3. Недостаточно свободного места

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

Решение: Проверьте свободное место на выбранном диске. Если места недостаточно, освободите его, например, удалив ненужные файлы или переносом части данных на другой диск.

4. Несовместимость версий Java

В некоторых случаях изменение папки назначения может вызывать проблемы из-за несовместимости версий Java или ее компонентов.

Решение: Убедитесь, что у вас установлена последняя версия Java и все ее компоненты настроены правильно. Обновите Java, если необходимо.

Это лишь несколько из возможных проблем, которые могут возникнуть при изменении папки назначения в Java. Решение каждой проблемы может зависеть от специфики ситуации и требовать дополнительного анализа и действий.

Шаг 7: Использование java.nio.file.Path

Для работы с путями в java существует класс Path из пакета java.nio.file. Он предоставляет более удобные методы для работы с путями, такие как добавление или удаление расширения файла, получение имени файла, родительской директории и т. д.

Чтобы создать объект Path, необходимо вызвать метод Paths.get(String first, String … more) и передать ему путь.

Примеры использования:

  • Path path = Paths.get(«C:/Users/User/Desktop/file.txt»);
  • Path path = Paths.get(«C:», «Users», «User», «Desktop», «file.txt»);

Path также предоставляет удобный метод resolve для объединения двух путей:

  • Path path1 = Paths.get(«C:/Users/User/Desktop»);
  • Path path2 = Paths.get(«file.txt»);
  • Path result = path1.resolve(path2);
  • System.out.println(result); // C:/Users/User/Desktop/file.txt

Кроме того, класс Path предоставляет удобные методы для проверки существования файла или директории, создания, переименования и удаления файлов и директорий.

Использование java.nio.file.Path позволяет более удобно и безопасно работать с файловой системой в Java.

Using renameTo() method

We can also use the method of the class, which moves a file on the same file system.

The usage of this method is not recommended as it is platform-dependent, non-atomic, and fails if the destination file already exists. We should always check the return value of this method to ensure that the move operation was successful as no exception is thrown on its failure.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

importjava.io.File;

importjava.io.IOException;

classMain

{

privatestaticbooleanmoveFile(File src,File dest)throwsIOException{

returnsrc.renameTo(dest);

}

publicstaticvoidmain(Stringargs)

{

File from=newFile(«src.txt»);

File to=newFile(«dest.txt»);

try{

booleansuccess=moveFile(from,to);

if(success){

System.out.println(«File Moved Successfully»);

}

else{

System.out.println(«File Moved Failed»);

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

}

That’s all about moving a file in Java.

 Also See:

Способ 2: Java Control Panel

Сразу стоит сказать, что этим способом вы сможете воспользоваться только в том случае, если на компьютере у вас уже установлено приложение. Итак, перейдем непосредственно к тому, как обновить «Джаву» вторым методом:

  1. Откройте «Панель управления». Это можно сделать через меню «Пуск», нажав по одноименной кнопке.
  2. Выберите в списке всех элементов пункт «Java».
  3. В новом окне «Java Control Panel» откройте вкладку «Update», поставьте отметку напротив пункта «Check for Updates Automatically», чтобы обновления в будущем проверялись автоматически, и нажмите кнопку «Update Now». Стоит учесть, что эта кнопка активна только в том случае, если ваша версия ПО устарела.
  4. Дождитесь окончания процесса обновления.

Получение информации о Пути

Можно думать как хранящий эти элементы имени как последовательность. Самый высокий элемент в структуре каталогов был бы расположен в, индексируют 0. Самый низкий элемент в структуре каталогов был бы расположен в, индексируют , где число элементов имени в . Методы доступны для получения отдельных элементов или подпоследовательности использование их индексирует.

Примеры в этом уроке используют следующую структуру каталогов.


Демонстрационная Структура каталогов

Следующий фрагмент кода определяет a экземпляр и затем вызывает несколько методов, чтобы получить информацию о пути:

// None of these methods requires that the file corresponding
// to the Path exists.
// Microsoft Windows syntax
Path path = Paths.get("C:\\home\\joe\\foo");

// Solaris syntax
Path path = Paths.get("/home/joe/foo");

System.out.format("toString: %s%n", path.toString());
System.out.format("getFileName: %s%n", path.getFileName());
System.out.format("getName(0): %s%n", path.getName(0));
System.out.format("getNameCount: %d%n", path.getNameCount());
System.out.format("subpath(0,2): %s%n", path.subpath(0,2));
System.out.format("getParent: %s%n", path.getParent());
System.out.format("getRoot: %s%n", path.getRoot());

Вот вывод и для Windows и для Соляриса ОС:

Вызванный метод Возвраты в Солярисе ОС Возвраты в Microsoft Windows Комментарий
Возвращает строковое представление . Если путь создавался, используя или (последний является методом удобства для ), метод выполняет незначительную синтаксическую уборку. Например, в операционной системе UNIX, это исправит строку ввода к .
Возвращает имя файла или последний элемент последовательности элементов имени.
Возвращается элемент пути, соответствующий указанному, индексируют. 0th элемент является элементом пути, самым близким к корню.
Возвращает число элементов в пути.
Возвращает подпоследовательность (не включая корневой элемент), как определено к началу и окончанию индексирует.
Возвращает путь родительского каталога.
Возвращает корень пути.

Предыдущий пример показывает вывод для абсолютного пути. В следующем примере определяется относительный путь:

// Solaris syntax
Path path = Paths.get("sally/bar");
or
// Microsoft Windows syntax
Path path = Paths.get("sally\\bar");

Вот является вывод для Windows и Соляриса ОС:

Вызванный метод Возвраты в Солярисе ОС Возвраты в Microsoft Windows

Символьные потоки

Потоки байтов в Java позволяют произвести ввод и вывод 8-битных байтов, в то время как потоки символов используются для ввода и вывода 16-битного юникода. Не смотря на множество классов, связанных с потоками символов, наиболее распространено использование следующих классов: FileReader и FileWriter. Не смотря на тот факт, что внутренний FileReader использует FileInputStream, и FileWriter использует FileOutputStream, основное различие состоит в том, что FileReader производит считывание двух байтов в конкретный момент времени, в то время как FileWriter производит запись двух байтов за то же время.

Мы можем переформулировать представленный выше пример, в котором два данных класса используются для копирования файла ввода (с символами юникода) в файл вывода.

Примечание по примеру: чтобы скопировать файл, необходимо в папке проекта создать файл file.txt с любым или пустым содержимым.

Пример

Теперь рассмотрим файл file.txt со следующим содержимым:

В качестве следующего шага необходимо скомпилировать программу и выполнить ее, что позволит создать файл copied_file.txt с тем же содержимым, что имеется в file.txt. Таким образом, разместим обозначенный код в файле FileCopy.java и выполним следующее действие:

Converting a Path

You can use three methods to convert the . If you need to convert the path to a string that can be opened from a browser, you can use . For example:

Running this code produces the following result:

The method converts a path to an absolute path. If the passed-in path is already absolute, it returns the same object. The method can be very helpful when processing user-entered file names. For example:

The method converts the user input and returns a that returns useful values when queried. The file does not need to exist for this method to work.

The method returns the real path of an existing file. This method performs several operations in one:

  • If is passed to this method and the file system supports symbolic links, this method resolves any symbolic links in the path.
  • If the path is relative, it returns an absolute path.
  • If the path contains any redundant elements, it returns a path with those elements removed.

This method throws an exception if the file does not exist or cannot be accessed. You can catch the exception when you want to handle any of these cases. For example:

Java Basic

  • Что мне нужно для начала работы с Java?
  • История Java и разница между Oracle JDK и OpenJDK
  • Установить Java в Windows
  • Установите Java в Ubuntu
  • Установите OpenJDK в Ubuntu
  • Установить Eclipse
  • Установите Eclipse в Ubuntu
  • Настройка Eclipse для использования JDK вместо JRE
  • Быстрое изучение Java для начинающих
  • История бит и байтов в информатике
  • Типы данных в java
  • Битовые операции
  • Команда if else в Java
  • команды switch в Java
  • Циклы в Java
  • Массивы (Array) в Java
  • JDK Javadoc в формате CHM
  • Наследование и полиморфизм в Java
  • Абстрактный класс и Interface в Java
  • Модификатор доступа (Access modifiers) в Java
  • Руководство Java Enum
  • Руководство Java Annotation
  • Настройте java compiler для обработки вашего Annotation (Annotation Processing Tool)
  • Сравнение и Сортировка в Java
  • Руководство Java String, StringBuffer и StringBuilder
  • Методы String.format() и printf() в Java
  • Обработка исключений Java — Java Exception Handling
  • Руководство Java Generics
  • Понимание Java System.identityHashCode, Object.hashCode и Object.equals
  • Руководство Java WeakReference
  • Руководство Java SoftReference
  • Руководство Java PhantomReference
  • Манипулирование файлами и каталогами в Java
  • Синтаксис и новые функции в Java 8
  • Регулярные выражения Java
  • Руководство Java Multithreading Programming
  • Библиотеки Java JDBC Driver для различных типов баз данных
  • Руководство Java JDBC
  • Получить значения столбцов, автоматически возрастающих при вставлении (Insert) записи, используя JDBC
  • Сжатие и декомпрессия в Java
  • Руководство Java Reflection
  • Java Удаленный вызов методов — Java RMI
  • Руководство Программирование Java Socket
  • Руководство Java Stream
  • Руководство Java Functional Interface
  • Руководство Java Predicate
  • Руководство Java BiPredicate
  • Руководство Java Consumer
  • Руководство Java BiConsumer
  • Руководство Java Supplier
  • Руководство Java Function
  • Руководство Java BiFunction
  • Аспектно-ориентированное программирование Java с помощью AspectJ (AOP)
  • Программирование на Java для группы с помощью Eclipse и SVN
  • Какую платформу я должен выбрать для разработки приложений Java Desktop?
  • Пример Java encoding и decoding с использованием Apache Base64
  • Руководство Java Commons IO
  • Руководство Java Commons Email
  • Руководство Java Commons Logging
  • Введение в Raspberry Pi

Show More

4. Фильтр File

Java.io.File класс предлагает несколько способов, чтобы получить список подфайлов и подкаталогов в каталоге. И использует FileFilter для фильтрации файлов

Метод Описание
static File[] listRoots() Возвращает массив объектов File, который представляет корневой каталог. В операционной системе Windows это диски (C:, D :, ..) в Unix это /
File[] listFiles() Возвращает массив объектов File, файлы и подпапки из текущей папки, и соотствествующий фильтру FilenameFilter на параметр.
File[] listFiles(FilenameFilter filter) Возвращает массив объектов File, файлы и подпапки из текущей папки, и соответствует с фильтром FilenameFilter на параметр
File[] listFiles(FileFilter filter) Возвращает массив объектов File, файлы и подпапки из текущей папки, а соответствует с фильтром FileFilter на параметр
String[] list() Возвращает массив путей, пути файлов и путь подпапок в текущей папке.
String[] list(FilenameFilter filter) Возвращает массив путей, пути файлов и путь подпапках текущей папки, и соответствует с фильтром FiltenameFilter на параметр

Например, список всех корневых каталогов:

RootFilesExample.java


В следующем примере составляется список всех файлов и подпапок в непосредственной папке:

FileListExample.java


java.io.FileFilter

** FileFilter **

Простой пример ниже использует FileFilter, чтобы отфильтровать файлы в папке и имеющие расширенную часть»txt»:

TxtFileFilter.java

FileFilterExample.java


java.io.FilenameFilter

** FilenameFilter **

Пример использовния FilenameFilter:

TxtFilenameFilter.java

FilenameFilterExample.java

Как изменить destination folder java?

Destination folder в Java — это путь к директории, где будут сохраняться созданные программой файлы. По умолчанию Java сохраняет файлы в корневой папке проекта, но иногда необходимо изменить путь к папке назначения.

Чтобы изменить destination folder в Java, необходимо в код программы добавить строчку, указывающую новый путь к папке. Например, для изменения пути к папке на диск C: необходимо добавить следующую строку:

System.setProperty(«user.dir», «C:\»);

System.setProperty() — это метод Java, который устанавливает системное свойство с заданным именем и значением. user.dir — это системное свойство, которое содержит текущий рабочий каталог в виде строки. Значением этого свойства является текущая директория, в которой исполняется программа Java.

Таким образом, вызов метода System.setProperty() со значением user.dir и новым путем к папке изменит destination folder программы.

Если нужно изменить путь к папке назначения только для конкретного метода, можно использовать метод System.setProperty() внутри метода. В этом случае новый путь к папке будет установлен только для этого метода и не повлияет на другие методы программы.

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

Шаги для смены destination folder

Иногда бывает необходимо изменить папку, в которую сохраняются файлы в Java. Чтобы это сделать, следуйте этим шагам:

  1. Определите текущую папку. Вы можете использовать метод System.getProperty(«user.dir») для того, чтобы узнать текущую папку, в которую сохраняются файлы. В консоль выведется путь к текущей папке.
  2. Создайте новую папку. Определите путь к новой папке, используя класс File. Затем создайте новую папку при помощи метода mkdirs().
  3. Установите новую папку. Используйте метод System.setProperty(«user.dir», «ПУТЬ»), чтобы установить новую папку в качестве папки назначения. В качестве «ПУТЬ» укажите путь к вашей новой папке.

Теперь, когда вы установили новую папку в качестве папки назначения, все файлы, которые вы сохраняете в Java, будут сохраняться в эту папку.

Метод Описание
System.getProperty(«user.dir») Возвращает текущую папку.
File Класс, который используется для создания файлов и папок.
mkdirs() Метод, используемый для создания новой папки.
System.setProperty(«user.dir», «ПУТЬ») Метод, используемый для установки новой папки в качестве папки назначения.

Пример кода для изменения destination folder

Для изменения destination folder, необходимо использовать класс System и метод setProperty(), который устанавливает указанную системную свойство.

Вот пример кода:

  1. String newFolder = «C:\NewFolder\»;
  2. System.setProperty(«user.dir», newFolder);

Этот код устанавливает свойство «user.dir» равным значению переменной newFolder. В данном случае новым путем станет «C:NewFolder».

Это очень простой пример, который демонстрирует базовый подход к изменению destination folder. Однако, в реальных проектах часто потребуется более сложное решение с использованием дополнительных библиотек или API для работы с файловой системой, например, Apache Commons IO или Java NIO.

Важно помнить, что изменение destination folder может повлиять на работу других компонентов системы, поэтому следует быть внимательным при его использовании и тестировании

Ошибка 1603 при установке Java – как решить проблему?

В процессе своей работы многие созданные под Windows приложения используют библиотеки, входящие в состав встроенных или отдельно устанавливаемых фреймворков вроде NET Framework. Одним из наиболее распространенных компонентов подобного рода является Java – программная платформа, разработанная компанией Sun. В свое время Java играла значительную роль в адаптации программного обеспечения, служа своего рода прокладкой между железом, операционной системой и программной средой. Сегодня данное ПО уже не столь востребовано, тем не менее, есть еще немало приложений, которые в нем нуждаются.

Если при установке какая-то программа потребует наличия Java, следует скачать ее последнюю версию с официального сайта и установить на ПК как обычное приложение. Обычно инсталляция пакета проходит без проблем, но в некоторых случаях на этом этапе вас может ждать неприятный сюрприз, а точнее ошибка 1603, указывающая на сбой установки.

Создание пакета

Как создать пакет в Java? Во время создания пакета вы должны выбрать ему имя и включить оператор package вместе с этим именем поверх каждого исходного файла, который содержит классы, интерфейсы, перечисления и типы аннотаций, которые вы хотите включить в пакет.

Оператор package должен быть первой строкой в исходном файле. Может быть только один запрос package в каждом исходном файле, и он применяется ко всем типам в этом файле.

Если оператор package не использован, тогда классы, интерфейсы, перечисления и типы аннотаций будут помещены в текущий пакет по умолчанию.

Чтобы скомпилировать программы на Java с операторами package, то вам нужно использовать опцию –d, как показано ниже.

Затем в указанном месте назначения создается папка с указанным именем пакета, а файлы скомпилированных классов будут помещены в эту папку.

Пример 1

Давайте взглянем на пример, которые создаёт пакет под названием animals. Полезно использовать имена пакетов с маленькой буквы, чтобы избежать конфликтов с именами классов и интерфейсов.

В следующем примере пакета содержится интерфейс с названием animals.

Теперь давайте реализуем вышеприведённый интерфейс в этом же пакете animals:

А сейчас скомпилируем java-файлы, как показано ниже:

Теперь пакет/папка с именем animals будет создана в текущей директории, и файлы классов будут помещены в неё.

Вы можете запустить файл класса внутри пакета и получить результат, указанный ниже.

Ключевое слово import

Если класс хочет использовать другой класс в том же пакете, то не нужно использовать имя пакета. Классы в одном пакете могут найти друг друга без особого синтаксиса.

Пример 2

Итак, класс под названием Boss добавлен в пакет payroll, который уже содержит Employee. Boss может обратиться к классу Employee без использования префикса payroll, как показано в следующем классе Boss.

Что произойдёт, если класс Employee не будет включен в пакет payroll? Тогда класс Boss должен будет использовать одну из следующих техник для обращения к классу в другом пакете:

Можно использовать полноценное имя класса. К примеру:

Импорт пакета. В Java пакет может быть импортирован с помощью ключевого слова import и wild card. (*). Например:

Сам класс можно импортировать с помощью ключевого слова import. Взглянем:

Примечание: Файл класса может содержать любое количество операторов импорта (import). Операторы импорта (import) должны появляться после оператора пакета (package) и перед объявлением класса.

Сохранение изменений

При работе с программами на языке Java, часто возникает необходимость сохранить изменения в определенной папке. Для этого можно использовать функцию Change destination folder (изменение папки назначения).

Change destination folder позволяет указать путь к папке, в которой будут сохраняться изменения, создаваемые программой. При этом, все создаваемые файлы и папки будут сохраняться в указанной директории.

Для работы с Change destination folder необходимо выполнить следующие шаги:

  1. Определить путь к папке, в которой будут сохраняться изменения.
  2. Использовать метод Change destination folder для указания этого пути в программе.
  3. Сохранить изменения.

Пример использования Change destination folder:

В данном примере мы определяем путь к папке назначения «C:\Users\User\Desktop\NewFolder» с помощью переменной destinationFolder. Затем создаем объект файла с указанным путем и с помощью метода mkdirs() изменяем папку назначения на указанный путь.

После изменения папки назначения, необходимо сохранить изменения, выполнив соответствующий код для сохранения.

Change destination folder позволяет сохранить изменения в определенной папке и управлять путем сохранения файлов и папок, создаваемых программой на языке Java.

Шаг 2: Создание файла в ресурсах проекта

После того, как вы создали папку в проекте, необходимо создать в ней файл, который будет содержать необходимые данные. Чтобы создать новый файл, кликните правой кнопкой мыши на папке и выберите «New» -> «File».

Затем откройте файл и добавьте необходимую информацию. Сохраните изменения, закройте файл и перейдите к следующему шагу.

Обратите внимание, что при создании файла важно не превышать допустимые размеры файла для вашего проекта. В противном случае, создание файла может привести к ошибкам выполнения и непредсказуемому поведению приложения

Теперь вы готовы использовать созданный файл в вашем Java-проекте.

Удаление Избыточности От Пути

Много файловых систем используют «.» нотацию, чтобы обозначить текущий каталог и «..» обозначить родительский каталог. У Вас могла бы быть ситуация где a содержит избыточную информацию о каталоге. Возможно, сервер конфигурируется, чтобы сохранить его файлы журнала в»»каталог, и Вы хотите удалить запаздывание»»нотация от пути.

Следующие примеры оба включают избыточность:

/home/./joe/foo
/home/sally/../joe/foo

метод удаляет любые избыточные элементы, который включает любого»»или»»возникновения. Оба из предыдущих примеров нормализуют к .

Важно отметить это не проверяет в файловой системе, когда она очищает путь. Это — просто синтаксическая работа

Во втором примере, если была символьная ссылка, удаляя мог бы привести к a это больше не определяет местоположение намеченного файла.

Чтобы очистить путь, гарантируя, что результат определяет местоположение корректного файла, можно использовать метод. Этот метод описывается в следующем разделе,

Выводы по использованию «Change destination folder java»

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

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

Использование «Change destination folder java» позволяет программисту следовать определенной систематике для сохранения файлов. Это помогает упорядочить структуру файлов в проекте и облегчает поиск и сопровождение кода в будущем.

Один из основных способов изменить папку назначения в Java — это использовать методы класса File. Этот класс предоставляет различные методы, такие как mkdir() и mkdirs(), которые позволяют создавать новые папки в указанном пути.

Также можно использовать методы класса File для перемещения файлов из одной папки в другую. Например, метод renameTo() позволяет изменить местоположение файла, указав новый путь к нему.

В Java также есть более современные средства для работы с файловой системой, такие как классы из пакета java.nio.file. Они предоставляют еще больше возможностей для работы с файлами и папками, включая возможность атомарного перемещения файла или копирования с использованием метода Files.move().

В целом, использование «Change destination folder java» дает программистам гибкость и контроль над файлами и папками в их приложениях. Он позволяет структурировать и управлять файлами в удобном формате и облегчает сопровождение кода.

Понравилась статья? Поделиться с друзьями:
Опытный компьютерщик
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: