GNU/Linux >> Belajar Linux >  >> Linux

cara mendapatkan jalur relatif direktori saat ini di kucing jantan dari lingkungan linux menggunakan java

Masalah Anda adalah Anda tidak tahu apa direktori "saat ini". Jika Anda memulai Tomcat di Linux sebagai layanan, direktori saat ini bisa berupa apa saja. Jadi new File(".") akan memberi Anda tempat acak di sistem file.

Menggunakan properti sistem catalina.base jauh lebih baik karena skrip awal Tomcat catalina.sh akan mengatur properti ini. Jadi ini akan berhasil selama Anda tidak mencoba menjalankan aplikasi Anda di server yang berbeda.

Kode yang bagus akan terlihat seperti ini:

File catalinaBase = new File( System.getProperty( "catalina.base" ) ).getAbsoluteFile();
File propertyFile = new File( catalinaBase, "webapps/strsproperties/strs.properties" );

InputStream inputStream = new FileInputStream( propertyFile );

Seperti yang Anda lihat, kode tidak mencampur string dan file. File adalah file dan string hanyalah teks. Hindari menggunakan teks untuk kode.

Selanjutnya, saya menggunakan getAbsoluteFile() untuk memastikan saya mendapatkan jalur yang berguna dalam pengecualian.

Pastikan juga kode Anda tidak menelan pengecualian. Jika Anda dapat melihat pesan kesalahan dalam kode Anda, Anda akan langsung melihat bahwa kode tersebut mencoba mencari di tempat yang salah.

Terakhir, pendekatan ini rapuh. Aplikasi Anda rusak jika jalur berubah, saat server web yang berbeda digunakan, dan untuk banyak kasus lainnya.

Pertimbangkan untuk memperluas webapp strsproperties untuk menerima permintaan HTTP. Dengan begitu, Anda dapat mengonfigurasi aplikasi Anda untuk terhubung ke strsproperties melalui URL. Ini akan berfungsi untuk server web apa pun, Anda bahkan dapat meletakkan properti di host yang berbeda.


Jika kode Anda berjalan di dalam servlet, mungkin lebih mudah menggunakan getServletContext().getRealPath("/strs.properties") untuk mengambil jalur file absolut.


Linux
  1. Cara mendapatkan ukuran direktori di Linux

  2. Bagaimana cara menjalankan program dengan direktori kerja yang berbeda dari saat ini, dari shell Linux?

  3. Dapatkan file terbaru di direktori di Linux

  1. Bagaimana cara membuat file di Linux dari jendela terminal?

  2. Bagaimana cara menambahkan file .so ke java.library.path di Linux

  3. Bagaimana cara mendapatkan path ke file saat ini (pwd) di Linux dari C?

  1. Bagaimana cara mendapatkan nama host dari IP (Linux)?

  2. Bagaimana cara mengeluarkan kunci Windows 8+ tertanam saya dari lingkungan Linux?

  3. Bagaimana cara menyalin jalur direktori penyimpanan file di Linux?