2009-01-27 16 views
8

Benim sorunum sadece ekran (dosyaadı.uzn only) için dosya adını ayıklamak zorunda "/usr/folder1/folder2/filename.ext"Dosya adının bir dosya URI'sinden nasıl çıkarılacağı ve bunun için bir bağlantı nasıl oluşturulur?

  • gibi bir dize itibaren

    :: olduğunu.

    • onu nasıl My soru yapmalıyım ki? "/" Üzerine bölmek ve son elemanı almak bir yol ama bana hoş gelmiyor.
  • Ben hedef olarak dosyanın URI kullanan bir köprü oluşturmak zorunda. //domain.com/usr/folder1/folder2/filename.ext

ben java.net içinde URI ve URL arayüzleri baktım ama orada yararlı bir şey bulamadı: Bu dosya benzer bir şey olacaktır.

Ayrıca bazı durumlarda, benim dosya yolu virgül ve boşluk vb (Windows klasörler) sahip olabilir. Yani, herhangi bir fikir verirken bunu aklınızda bulundurun.

+0

Önerilen çözüm evrensel değildir. Bunun yerine http://stackoverflow.com/a/10944586/715269 adresini deneyin. – Gangnus

cevap

15

Böyle bir şey deneyebilirsiniz. , FilenameUtils.getName() dosya adı + uzantısını verir:

+0

thx, kod örneğini vermek için tembel oldu. ;) – Nicolas

+0

"Dosya" yapıcısına iletmem gereken argüman, geçersiz bir argüman olarak reddedilen bir "Uri" idi. Uri'yi bir dizeye dönüştürmek için yeterince basit: 'Dosya dosyası = yeni Dosya (mImageUri.toString());' –

3

File class'a bir göz atmalısınız. Özellikle getName() yöntemine.

File file = new File("/usr/folder1/folder2/filename.ext"); 
System.out.println(file.getName()); 

ben dosya yoksa bu işe edip emin değildi, ama sadece bunu denedim ve Tamam çalışmak için görünür:

4

CommonsIO bu soruna çözüm sağlar.

String filename = FilenameUtils.getName("/usr/folder1/folder2/filename.ext"); 
System.out.println(filename); // Returns "filename.ext"