Как получить имя файла без расширения?
От: Аноним  
Дата: 16.05.07 06:31
Оценка:
Как проще всего получить имя файла без расширения?
Могут быть две ситуации
1. Файл имеет расширение.
2. Файл не имеет расширения.

Как проще всего это обрабатывать?
Re: Как получить имя файла без расширения?
От: Blazkowicz Россия  
Дата: 16.05.07 06:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как проще всего получить имя файла без расширения?

А>Могут быть две ситуации
А>1. Файл имеет расширение.
А>2. Файл не имеет расширения.

Расширение это всего лишь условная часть имени файла. Поэтому File.getName и String.lastIndexOf и т.п.
Re: Как получить имя файла без расширения?
От: Сэма Россия  
Дата: 18.05.07 06:17
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как проще всего получить имя файла без расширения?

А>Могут быть две ситуации
А>1. Файл имеет расширение.
А>2. Файл не имеет расширения.

А>Как проще всего это обрабатывать?

String[] arr = fileName.split(".");
if (arr.length=1){
//Значит нет расширения
} else {
//Последний элемент нафик все остальное в кучку
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Как получить имя файла без расширения?
От: aefimov Россия
Дата: 18.05.07 07:41
Оценка:
Здравствуйте, Сэма, Вы писали:

С>if (arr.length=1){

==

С>//Последний элемент нафик все остальное в кучку


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

String fileName = file.getName();
int i = fileName.lastIndexOf('.');
if (i != -1) {
   fileName = fileName.substring(0, i);
}


И главное ведь. Наглядно и просто.
Re[3]: Как получить имя файла без расширения?
От: V.Goncharov Россия  
Дата: 18.05.07 07:48
Оценка:
И еще не забыть про ситуацию, когда файл начинается с '.'
Re[4]: Как получить имя файла без расширения?
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 18.05.07 07:52
Оценка:
Здравствуйте, V.Goncharov, Вы писали:

VG>И еще не забыть про ситуацию, когда файл начинается с '.'


lastIndexOf() != indexOf()
http://denis-zhdanov.blogspot.com
Re[5]: Как получить имя файла без расширения?
От: aefimov Россия
Дата: 18.05.07 07:56
Оценка: 1 (1)
Здравствуйте, bolshik, Вы писали:

VG>>И еще не забыть про ситуацию, когда файл начинается с '.'


Расширение вообще имеет смысл чисто нотационный. Если файл имет в нуле точку, то не факт, что он вообще имеет «имя без расширения».
Но можно для этой ситуации сравнивать не как != -1, а как > 0.

B>lastIndexOf() != indexOf()


Это не верно.
Re[6]: Как получить имя файла без расширения?
От: Сэма Россия  
Дата: 18.05.07 09:31
Оценка: 1 (1)
Здравствуйте, aefimov, Вы писали:

A>Здравствуйте, bolshik, Вы писали:


VG>>>И еще не забыть про ситуацию, когда файл начинается с '.'


A>Расширение вообще имеет смысл чисто нотационный. Если файл имет в нуле точку, то не факт, что он вообще имеет «имя без расширения».

A>Но можно для этой ситуации сравнивать не как != -1, а как > 0.

B>>lastIndexOf() != indexOf()


A>Это не верно.

Это уже скорее в философию надо идти или в алгоритмы ибо спор вечен и договоренность должна быть:
1) Никто ни разу не сказал про то что это ТОЛЬКО имя файла а не вся домовая книга включая путь
2) Нужна четкая договоренность что то что после последней точки ВСЕГДА являтеся расширением а не очередным.словом.в.ненормальном.имени.файла_без.расширения
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Как получить имя файла без расширения?
От: aka50 Россия  
Дата: 18.05.07 10:17
Оценка:
Здравствуйте, Сэма, Вы писали:

С>Здравствуйте, aefimov, Вы писали:

A>>Расширение вообще имеет смысл чисто нотационный. Если файл имет в нуле точку, то не факт, что он вообще имеет «имя без расширения».
A>>Но можно для этой ситуации сравнивать не как != -1, а как > 0.
С>Это уже скорее в философию надо идти или в алгоритмы ибо спор вечен и договоренность должна быть:
С>1) Никто ни разу не сказал про то что это ТОЛЬКО имя файла а не вся домовая книга включая путь
С>2) Нужна четкая договоренность что то что после последней точки ВСЕГДА являтеся расширением а не очередным.словом.в.ненормальном.имени.файла_без.расширения
А почему "очередным.словом.в.ненормальном.имени.файла_без.расширения"? Достаточно понимать, что java — это кросплатформенная система, а следовательно предполагать о:
1. Наличии диска С в пути
2. Наличии расширения
3. Регистронезависимости
— категорически не стоит.

Если нужно определить тип файла надо использовать определение по mime type http://www.rgagnon.com/javadetails/java-0487.html
Re[2]: Как получить имя файла без расширения?
От: Аноним  
Дата: 24.05.07 07:31
Оценка:
Здравствуйте, Сэма, Вы писали:

А>>Как проще всего это обрабатывать?

С>
С>String[] arr = fileName.split(".");
С>if (arr.length=1){
С>//Значит нет расширения
С>} else {
С>//Последний элемент нафик все остальное в кучку
С>}
С>



только split(...) использует регулярные выражения. так работать не будет.
следовало бы split("\\.")
Re[8]: Как получить имя файла без расширения?
От: aefimov Россия
Дата: 24.05.07 07:34
Оценка:
Здравствуйте, aka50, Вы писали:

A>Если нужно определить тип файла надо использовать определение по mime type http://www.rgagnon.com/javadetails/java-0487.html


Оно не тормозит, кстати?
Если вам в IDE надо отрисовать иконки на файлах проекта и разбросать их по типам? А файлов, гдето под 20000?
Re: Как получить имя файла без расширения?
От: Аноним  
Дата: 24.05.07 12:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как проще всего получить имя файла без расширения?


А можна узнать зачем такое нужно?
Может Вы просто выбрали не правильное направление в решении вашей задачи?
Re[9]: Как получить имя файла без расширения?
От: aka50 Россия  
Дата: 24.05.07 12:10
Оценка:
Здравствуйте, aefimov, Вы писали:

A>Оно не тормозит, кстати?

A>Если вам в IDE надо отрисовать иконки на файлах проекта и разбросать их по типам? А файлов, гдето под 20000?
Что прям все 20000 в одном tree? , а не правильнее ли lazy tree + cache? Зато никакой привязки. Ибо меня вот например бесит idea тем, что у нее все на расширения подвязано и сделать что-то более умное (например отличать spring xml от просто xml) невозможно.
Re[10]: Как получить имя файла без расширения?
От: aefimov Россия
Дата: 24.05.07 12:13
Оценка:
Здравствуйте, aka50, Вы писали:
A>>Если вам в IDE надо отрисовать иконки на файлах проекта и разбросать их по типам? А файлов, гдето под 20000?
A>Что прям все 20000 в одном tree? , а не правильнее ли lazy tree + cache? Зато никакой привязки. Ибо меня вот например бесит idea тем, что у нее все на расширения подвязано и сделать что-то более умное (например отличать spring xml от просто xml) невозможно.

Ну вобщето возможно. Но без полного парсинга не обойтись же всеравно. А фулскан дерева нужен, чтобы в рефакторингах не пропустить ничего. Ну и в лукапах.
Re[2]: Как получить имя файла без расширения?
От: Аноним  
Дата: 24.05.07 12:17
Оценка:
А>А можна узнать зачем такое нужно?
А>Может Вы просто выбрали не правильное направление в решении вашей задачи?
Затем что есть несколько файлов с одинаковым именем, но с разными расширениями.
А читать в определенный момент надо только файл с нужным расширением.
Re[11]: Как получить имя файла без расширения?
От: aka50 Россия  
Дата: 24.05.07 12:21
Оценка:
Здравствуйте, aefimov, Вы писали:

A>Ну вобщето возможно. Но без полного парсинга не обойтись же всеравно. А фулскан дерева нужен, чтобы в рефакторингах не пропустить ничего. Ну и в лукапах.


Так ведь все равно psi строится... так какая разница тогда какое расширение, ведь существует точное отображение psielement <- file, и выходит что расширение только с толку сбивает. А так все просто, появился новый файл, его отсканили (при чем точно определили тип, не просто .doc, а именно MSOffice 6.0 Document) и сохранили в кеш. А если исходить из просто расширения, то .doc может быть чем угодно (и просто текст, и MSO и вообще что-то невообразимое).
Re[12]: Как получить имя файла без расширения?
От: aka50 Россия  
Дата: 24.05.07 12:23
Оценка:
Здравствуйте, aka50, Вы писали:

A>Так ведь все равно psi строится... так какая разница тогда какое расширение, ведь существует точное отображение psielement <- file, и выходит что расширение только с толку сбивает. А так все просто, появился новый файл, его отсканили (при чем точно определили тип, не просто .doc, а именно MSOffice 6.0 Document) и сохранили в кеш. А если исходить из просто расширения, то .doc может быть чем угодно (и просто текст, и MSO и вообще что-то невообразимое).


Хотя с другой стороны, отличить файл допустим .scala от .java достаточно сложно (если не невомзможно), по этому имхо лучший вариант mime + extension.
Re[12]: Как получить имя файла без расширения?
От: aefimov Россия
Дата: 24.05.07 12:28
Оценка:
Здравствуйте, aka50, Вы писали:

A>Так ведь все равно psi строится... так какая разница тогда какое расширение, ведь существует точное отображение psielement <- file, и выходит что расширение только с толку сбивает. А так все просто, появился новый файл, его отсканили (при чем точно определили тип, не просто .doc, а именно MSOffice 6.0 Document) и сохранили в кеш. А если исходить из просто расширения, то .doc может быть чем угодно (и просто текст, и MSO и вообще что-то невообразимое).


Вы предлагаете взять N PSI парсеров ,прогнать через них X файлов и полученное PSI дерево (еще надо выбрать какое их них лучше) сохраняем в кешах и рисуем иконку в зависимости от типа PsiFile?

Оно умрет Надо как то быстро раскидать файлы для парсеров. Т.е. быстро установить соответствие между файлом и его парсером. Сейчас это делает патернами по имени файла. Вероятно делать первых N байт тоже можно, но это может тормозить (открытие файла операция не быстрая)...
Re[13]: Как получить имя файла без расширения?
От: aka50 Россия  
Дата: 24.05.07 12:40
Оценка:
Здравствуйте, aefimov, Вы писали:

A>Здравствуйте, aka50, Вы писали:

A>Вы предлагаете взять N PSI парсеров ,прогнать через них X файлов и полученное PSI дерево (еще надо выбрать какое их них лучше) сохраняем в кешах и рисуем иконку в зависимости от типа PsiFile?
Как-то прям официально , "Вы" .
A>Оно умрет Надо как то быстро раскидать файлы для парсеров. Т.е. быстро установить соответствие между файлом и его парсером. Сейчас это делает патернами по имени файла. Вероятно делать первых N байт тоже можно, но это может тормозить (открытие файла операция не быстрая)...
Дык mime — это и есть первые N байт
Но в целом согласен, все таки маска поиска нужна. Другой вопрос, стоит ли затачиваться что это будет именно filename.ext, а не filename.ext.ext2.ext3
Re: Как получить имя файла без расширения?
От: GarryIV  
Дата: 24.05.07 20:03
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Как проще всего получить имя файла без расширения?

А>Могут быть две ситуации
А>1. Файл имеет расширение.
А>2. Файл не имеет расширения.

А>Как проще всего это обрабатывать?


Ну так мы вроде определились что "расширений" в природе нет
Но!
В прикладной задаче нет ничего проще их заново ввести.
То есть тебе известно, что имя файла имеет вид "имя_незнаю_чего[.расширение]"
Теперь вопрос. Имя_незнаю_чего может содержать точку? Если нет то все банально lastIndexOf и вперед. Иначе нужно больше сведений о том что такое имя_незнаю_чего, какие могут быть расширения, или любую другую инфомацию на эту тему.

Это вобщем то к Java совсем не относится.
WBR, Igor Evgrafov
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.