![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| #Maestro# |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.7.2008 Репутация: нет Всего: нет |
очень надо программно открыть Excel и XML-файл и показать его пользователю. вот как выглядит моя функция:
дальше следует выбрать функцию обработки файла (Excel или XML фалов, в зависимости от выбора). вопрос: как узнать тип этого выбранного файла? то есть: какую функцию мне вызвать - обработки Excel-файла? или XML? |
|||
|
||||
| yuliada |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 16.2.2009 Где: Иркутск - San Die go Репутация: нет Всего: нет |
По идее xml должен всегда начинаться с тега xml, можно почитать в файлике первую строчку
|
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
xls-файл начинает с 8-и байтовой сигнатуры специфичной для compound documents - D0 CF 11 E0 A1 B1 1A E1
|
|||
|
||||
| #Maestro# |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.7.2008 Репутация: нет Всего: нет |
Поставим вопрос по-другому. переменная fName (типа String) содержит имя полное файла. может быть существует функция, способная определить расширение?
я решил вопрос по-рабоче-крестьянски:
может кто скажет вариант по-проще? |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 1 Всего: 9 |
можно и так конечно, но можно и так:
Добавлено через 1 минуту и 4 секунды а вообще все типы файлов которые ты можешь читать я бы вынес в enum -------------------- SCJP 6 |
|||
|
||||
| #Maestro# |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.7.2008 Репутация: нет Всего: нет |
если б мне знать что такое enum...
вы это имеете ввиду:
?? а как потом это работает? Это сообщение отредактировал(а) #Maestro# - 21.4.2009, 09:58 |
|||
|
||||
| _and |
|
||||
![]() Java-developer ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 6.8.2004 Где: Новокузнецк Репутация: 1 Всего: 4 |
это енум
а так его пользовать
|
||||
|
|||||
| #Maestro# |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.7.2008 Репутация: нет Всего: нет |
уважаемый _and, мне не совсем понятно чем отличаются функции FileTypes и setFileType. по-моему их логика совершенно одинакова. и ещё:
если не трудно, не могли бы вы пояснить работу FileTypes.valueOf("XML")? заранее спосибо! |
|||
|
||||
| _and |
|
||||
![]() Java-developer ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 6.8.2004 Где: Новокузнецк Репутация: 1 Всего: 4 |
FileTypes - конструктор IDEA у меня автоматом генерит getter и setter методы, можно и без него обойтись посомтри тут - кратко по enum и тут официальая дока
из jacadoc
класс FileTypes есть enum, и является подклассом java.lang.Enum соответственно наследует метод valueOf(...) |
||||
|
|||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
В нормальном enum setFileType() не должно быть, иначе можно сделать:
и у обоих членов enum будет одно и то же значение поля fileType. |
|||
|
||||
| #Maestro# |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.7.2008 Репутация: нет Всего: нет |
честно говоря, я тоже не совсем понял зачем создавать такой конструктор, если есть функция set()
Это сообщение отредактировал(а) #Maestro# - 21.4.2009, 13:37 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А нафига нужно поле fileType
Не говоря уж о том, что под Windows файл может иметь расширение и xml, и XML, и XmL и это будет одно и то же расширение. Добавлено через 1 минуту и 50 секунд Вообщем вариант самый нормальный, если в нем учесть регистр. А вообще у Апача есть куча утилит для работы с файлами которые все это учитывают. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Asal |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 26.12.2006 Где: Минск Репутация: нет Всего: 7 |
А почему никто не прислушался к Amp, человек же дело сказал! Расширение же у файла может быть любое, и в винде, и под линем.
Google.com и 10 минут времени |
||||||
|
|||||||
| _and |
|
|||
![]() Java-developer ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 6.8.2004 Где: Новокузнецк Репутация: 1 Всего: 4 |
||||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 1 Всего: 9 |
далее развиваю тему с енумом...
в энум я бы добавил статический паблик метод который бы по файлнейму возвращал тип энума выглядело это бы как то так:
Это сообщение отредактировал(а) goodday1941 - 22.4.2009, 14:43 -------------------- SCJP 6 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Потому что: 1. Это ненадежно, например Офис 2007 сменил формат документов, теперь он начинается с другой сигнатуры. А файл XML вообще не имеет четкой сигнатуры (пролог документа очень часто опускается). А что прикажете делать если надо добавить ещё один тип файлов, опять искать какая у него сигнатура? 2. Вообще-то расширения для того и придуманы, чтобы идентифицировать типы файлов. Если файл имеет неправильное расширение, это проблемы пользователя. И если у него файлы имеют неправильное расширение, то пусть озаботиться тем, чтобы вручную указать что это за файл. Вообще это очень малораспространённая практика. Так пожалуй поступают только программы для просмотра картинок и программы для восстановления данных. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
У меня так файловый менеджер работает - расширения им игнорируются P.S. Я и не думал, что такую тему можно мусолить целую форумную страницу. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
что за endsWith() без аргумента? Нужно так:
|
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 1 Всего: 9 |
math64, сорри, ошибка моя
-------------------- SCJP 6 |
|||
|
||||
| #Maestro# |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.7.2008 Репутация: нет Всего: нет |
прошу прощения, что вмешиваюсь, но у меня новая проблемма. при создании Excel в строке
вылетает ошибка: Exception in thread "main" org.apache.poi.ss.formula.FormulaParser$FormulaParseException: Specified named range 'stroka' does not exist in the current workbook. видимо setCellFormula(...) может воспринимать только цифры. а что делать, если далжна быть строка? и как компилятор понял, что создаваемый файл называется "workbook"? если я имя задаю только в конце кода. кстати в NetBeanse (или как там его?) версии 5.5 такая проблема не возникает, возникает в шестом. помогите, кто может |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Модератор: Пожалуйста, один топик - один вопрос.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |