it-swarm-id.com

Skema Uri File dan File Relatif

Asumsikan bahwa skema untuk uri adalah "file". Juga asumsikan bahwa jalan dimulai dengan '.' 

Contoh path adalah './.bashrc'. Bagaimana tampilan fulluri? 'file: //./.bashrc' tampak aneh bagi saya. 

47
user592419

Singkatnya, URL file berupa:

file://localhost/absolute/path/to/file [ok]

atau Anda dapat menghilangkan Host (tetapi bukan slash):

file:///absolute/path/to/file [ok]

tapi bukan ini:

file://file_at_current_dir [no way]

atau ini:

file://./file_at_current_dir [no way]

Saya baru saja mengkonfirmasi bahwa melalui urllib2.urlopen Python ()

Lebih detail dari http://en.wikipedia.org/wiki/File_URI_scheme :

"file:///foo.txt" is okay, while "file://foo.txt" is not,
although some interpreters manage to handle the latter
52
RayLuo

Tidak mungkin menggunakan file lengkap: URI dengan '.' atau segmen '..' di jalur tanpa bagian root dari jalur itu. Apakah Anda menggunakan 'file: //./.bashrc' atau 'file: ///./.bashrc' jalur ini tidak masuk akal. Jika Anda ingin menggunakan tautan relatif, gunakan tanpa bagian protokol/otoritas:

<a href="./.bashrc">link</a>

Jika Anda ingin menggunakan URI penuh, Anda harus memberi tahu root relatif tempat jalur relatif Anda:

<a href="file:///home/kindrik/./.bashrc">link</a>

Menurut RFC 3986

The path segments "." and "..", also known as dot-segments, are
defined for relative reference within the path name hierarchy.  They
are intended for use at the beginning of a relative-path reference
(Section 4.2) to indicate relative position within the hierarchical
tree of names.  This is similar to their role within some operating
systems' file directory structures to indicate the current directory
and parent directory, respectively.  However, unlike in a file
system, these dot-segments are only interpreted within the URI path
hierarchy and are removed as part of the resolution process (Section
5.2).

The complete path segments "." and ".." are intended only for use
within relative references (Section 4.1) and are removed as part of
the reference resolution process (Section 5.2).  However, some
deployed implementations incorrectly assume that reference resolution
is not necessary when the reference is already a URI and thus fail to
remove dot-segments when they occur in non-relative paths.  URI
normalizers should remove dot-segments by applying the
remove_dot_segments algorithm to the path, as described in Section 5.2.4.

The complete path segments "." and ".." are intended only for use
within relative references (Section 4.1) and are removed as part of
the reference resolution process (Section 5.2) 

RFC 3986 menjelaskan bahkan suatu algoritma untuk menghilangkan "" ini. dan ".." dari URI.

18
kinORnirvana

Di terminal Anda bisa mengetik "file: //$PWD/.bashrc" menggunakan "$ PWD" untuk merujuk ke direktori saat ini.

14
andz

Anda seharusnya tidak membuat tebasan ganda setelah file:. Bentuk yang benar adalah

'file:.bashrc'

Lihat RFC 3986 , path-rootless definisi

3
Maxim Reznik

Saya tidak tahu kasus penggunaan Anda. 

Saya memiliki kebutuhan yang serupa dalam kode simpul saya, jadi ketika saya memerlukan url file relatif terhadap direktori kerja saya, saya membuat url seperti ...

const url = "file://" + process.cwd() + "/" + ".bashrc";
3
Ken Lin

Dalam skrip unix Shell saya berhasil menggunakan ini:

file://`pwd`/relative-path

Dalam kasus khusus Anda:

file://`pwd`/.bashrc
0
1234ru