2009-10-03 31 views
1

有沒有什麼寫法?標記文件名?在我的文件名

+0

我在說我的windows服務器上保存這個文件,實際上寫這個文件名的人是我的網站訪問者,所以我無法控制那裏的條目,但是在這裏你的答案我明白文件的限制名稱如「< >:」/ \ |?*「所以我想我要做什麼, 是讓他們寫任何他們想寫的東西,然後我會剪下這些無效字符並將其保存在隱藏控制中,並保存但是沒有這些字符的文件 謝謝大家 – 2009-10-03 20:03:09

+1

讓用戶決定服務器上的文件名不是一個好主意,它可以讓你自己生成唯一的名字,例如與現有文件衝突,甚至是與現有文件衝突更糟糕的是,你必須自己過濾所有*變體,以確保沒有不好的事情發生 – 2009-10-03 20:34:39

+0

另一種方法是將這些無效字符編碼爲不使用無效字符的東西(類似URL編碼無效字符的東西)。這樣你就不必在別的地方保存'真實的,用戶可見的文件名'。 – 2009-10-03 20:43:40

回答

4

沒有,因爲它是一個通配符如*是。

here

使用當前代碼頁中的任何字符的名稱,包括擴展字符集(128-255)的Unicode字符,字符,除了以下:

* The following reserved characters: 

    < > : "/\ | ? * 
* Integer value zero, sometimes referred to as the ASCII NUL character. 
* Characters whose integer representations are in the range from 1 through 31,except for streams. For more information about file streams, see File Streams. 
+1

不知何故,我設法將一個文件從Linux上的ext3文件系統複製到一個名爲「file:」的ntfs分區,冒號(使用ntfs-3g)。我從來沒有能夠改變或刪除它,它已經在我的驅動器的根源一年多了。 – 2009-10-03 19:54:27

11

在Windows平臺上?不,這是Windows文件系統中名稱的無效字符。

維基百科條目對文件名有一個相當廣泛的分類,哪些字符被保留給各種操作系統和文件系統組合。這裏是鏈接

+3

,即使你設法這樣做,沒有標準的API將能夠讀取文件 – BlackTigerX 2009-10-03 19:15:32

0

在Linux和OSX文件系統上是可能的,儘管我很確定Windows不允許這樣做。

1

我似乎記得,如果您使用v1.x函數之一(使用FCB而不是文件句柄),那麼當您使用MS-DOS時,您可以採用這種方式執行此類操作。我想知道是否有任何即使是最近版本的Windows都能成功運行這樣一個野獸(假設我是正確的關於DOS的事情讓你這樣做)?

如果您決定試一試(如果您甚至可以挖掘這些工具),請放下備註。

+0

+1用於記住如此過時的信息。基本上,它可以用於任何版本的DOS至少5,但你必須使用舊功能。即使這樣,強烈建議你不要這樣做。 – Tom 2009-10-03 19:37:43

+0

只要他們提出一個軟件開發版本的平凡追求,我就是金。嗯,現在我想到了,「Trival Pursuit」幾乎是當今瑣事問題的答案。我想我最好回過頭來組織我的軟盤,並爭論「指定擊球手規則」是否會毀掉棒球。 – 2009-10-03 20:34:56

0

是的,你可以寫?在一個文件名中,就像你可以有一個文件沒有名字,只有一個擴展名。

這將需要FTP上傳或以ASCII格式打開介質。

+0

那我怎麼能? 考慮到我在問winows操作系統 Thak你, – 2009-10-03 19:53:58

1

根據該NTFS article in wiki,可以使用其他字符:除了U + 0000(NUL)和/(斜槓)

在Posix的命名空間,任何UTF-16代碼單元(區分大小寫)

我不知道你是否必須有一個單獨的分區,或者一個不同的API調用到POSIX系統將允許你使用特殊字符。