Jadi misalnya katakan saya memilikinya sehingga semua file saya akan ditransfer dari mesin windows ke mesin unix seperti: C:\test\myFile.txt
to {somewhere}/test/myFile.txt
(huruf drive tidak relevan pada saat ini).
Saat ini, perpustakaan utilitas kami yang kami tulis sendiri menyediakan metode yang melakukan penggantian sederhana dari semua garis miring dengan garis miring:
public String normalizePath(String path) {
return path.replaceAll("\\", "/");
}
Garis miring dicadangkan dan tidak dapat menjadi bagian dari nama file, sehingga struktur direktori harus dipertahankan. Namun, saya tidak yakin apakah ada komplikasi lain antara windows dan path unix yang mungkin perlu saya khawatirkan (misalnya: nama non-ascii, dll)
java
file-systems
MxLDevs
sumber
sumber
/foo\\bar
tidak setara dengan/foo/bar
di Linux.Jawaban:
Ya, jika Anda hanya melakukan penggantian pada Windows, dan matikan saat berjalan di sistem lain.
Melakukan penggantian pada Unix-seperti sistem adalah salah karena
\
merupakan karakter yang valid dalam sebuah file atau direktori di Unix-seperti platform. Pada platform ini, hanyaNUL
dan/
dilarang dalam nama file dan direktori.Juga, beberapa fungsi Windows API (kebanyakan yang tingkat bawah) tidak memungkinkan penggunaan garis miring - backslash harus digunakan dengannya.
sumber
Ya, tapi semua ini adalah poin yang bisa diperdebatkan. Java secara mulus mengkonversi garis miring ke belakang pada Windows. Anda cukup menggunakan garis miring ke depan untuk semua jalur yang dikodekan atau disimpan dalam konfigurasi dan itu akan bekerja untuk kedua platform.
Secara pribadi, saya selalu menggunakan garis miring bahkan pada Windows karena itu bukan karakter pelarian. Apakah jalur mentah dalam kode atau dieksternalisasi dalam file properti, saya menyandikannya dengan cara yang sama.
Cobalah! Ini akan bekerja di Windows. Jelas, ubah jalur aktual ke sesuatu yang ada dan pengguna Anda memiliki izin untuk membaca.
Bonus: Anda bahkan dapat mencampur garis miring di jalur yang sama!
sumber
COMMAND.COM
Penerjemah awal memiliki preferensi run-time: Anda dapat mengonfigurasi slash mana yang akan digunakan penerjemah untuk mencetak dan menguraikan.Komplikasi lain pada Windows adalah bahwa ia juga mendukung notasi UNC serta huruf drive tradisional.
File pada server file jarak jauh dapat diakses sebagai
\\server\sharename\path\filename
.sumber
Tidak. Ada jauh lebih banyak hal untuk dipikirkan daripada hanya pemisah jalur (hal "\ vs /"). Seperti yang disebutkan oleh Rob Y, ada bagaimana ruang ditangani, dan frekuensinya yang tinggi dalam penggunaan Windows. Ada berbagai karakter ilegal di dua lingkungan tersebut. Ada kesediaan Unix untuk mengizinkan hampir semua hal saat lolos dari "" "pemimpin. Ada Windows menggunakan '"' untuk menangani ruang yang disematkan. Ada Windows menggunakan UCS-16 dan Unix menggunakan ASCII atau UTF-8.
dll , dll , dll.
Tetapi , untuk banyak aplikasi yang dapat membuat kendala pada pathnames yang perlu mereka manipulasi, Anda sebenarnya dapat melakukannya persis seperti yang Anda sarankan. Dan itu akan bekerja setidaknya dalam sejumlah besar kasus, hanya saja tidak semuanya.
sumber
Setiap sistem operasi Microsoft, dimulai dengan MS-DOS, telah memahami, pada level kernel, baik garis miring ke depan dan garis miring terbalik .
Oleh karena itu, pada Windows, Anda dapat mengonversinya secara bebas; keduanya memiliki status yang sama sebagai pemisah yang dipesan. Dalam setiap jalur yang valid, Anda dapat mengganti garis miring terbalik dengan garis miring dan sebaliknya, tanpa mengubah artinya, sejauh menyangkut kernel.
Pada versi awal DOS,
command.com
interpreter Microsoft menjadikannya pilihan yang dapat dikonfigurasi yang menggunakan slash untuk menampilkan dan mem-parsing path. Itu akhirnya dihapus.Beberapa program ruang pengguna di Windows seperti, oh, shell Windows (
explorer.exe
) tidak suka garis miring. Itu hanya pemrograman yang jelek di program-program itu.sumber