2011-06-08 17 views
7

के अंत में स्थान के साथ फ़ाइलों को प्रतिलिपि/स्थानांतरित नहीं कर सकता है यह वास्तव में पागल है! मैंने Far 2.0 (http://www.farmanager.com/ का उपयोग करके एक फ़ाइल बनाई है, हो सकता है कि आप किसी अन्य फ़ाइल प्रबंधक का उपयोग कर सकें); इसका फ़ाइल नाम 'सी: \ 123.txt' है (हाँ, फ़ाइलपैथ के अंत में स्थान के साथ)फ़ाइल नाम

और मैं कॉपी या एक सी # प्रोग्राम का उपयोग इस फ़ाइल को स्थानांतरित करने के लिए कोशिश कर रहा हूँ:

File.Copy("C:\\123.txt ", "C:\\456.txt", true); 

लेकिन इसके साथ विफल रहता है "नहीं मिली फ़ाइल 'C: \ 123.txt'।" अपवाद। लेकिन फाइल मौजूद है!

मैं Windows API कोशिश कर रहा हूँ:

[DllImport("kernel32.dll")] 
public static extern int MoveFile(string lpExistingFileName, string lpNewFileName); 
MoveFile("C:\\123.txt ", "C:\\456.txt",); 

लेकिन यह भी विफल रहता है।

और मैं xcopy उपयोगिता कोशिश कर रहा हूँ:

C:\>xcopy "C:\123.txt " "C:\456.txt" /Y 
File not found - 123.txt 
0 File(s) copied 

मैं कैसे फ़ाइल को प्रोग्राम के नाम बदल सकते हैं कर सकते हैं? और ऐसा क्यों होता है?

मेरे ओएस: विंडोज 7 x64

+0

यदि आप '@" "सी: \ 123.txt" "" 'का उपयोग करते हैं तो क्या होगा? – zerkms

+1

आपने यह फ़ाइल कैसे बनाई? आम तौर पर सफेद जगह काटा जाता है। – leppie

+0

zerkms, पथ में अवैध पात्र। –

उत्तर

10

आप Win32 में अवैध रूप से है कि आपके फ़ाइल नाम में एक चरित्र है। Win32 पथ पार्सर को बाधित करने के लिए, आपको बस अपने फ़ाइल नाम को \\?\ के साथ उपसर्ग करना होगा। उदाहरण के लिए:

MoveFile(@"\\?\C:\123.txt ", "C:\\456.txt"); 

इस तकनीक का प्रयोग आप लंबाई में 32k अप करने के लिए पथ है करने की अनुमति देगा (आप केवल Win32 में ड्राइव अक्षर सहित 260 मिलता है)। और सब कुछ बाद में निकाल दिया जाएगा लेकिन अंतरिक्ष रहेगा:

+0

बढ़िया! बहुत बहुत धन्यवाद –

+0

यह मेरे लिए काम करता है, लेकिन FindFirstFile/FindNextFile मेरे लिए जगह वापस नहीं कर रहा है। – malkia

+1

@malkia: यदि आपको अमान्य फ़ाइल नामों में कोई समस्या हो रही है, तो आप उपलब्ध होने पर 8.3 छोटे नाम का हमेशा उपयोग कर सकते हैं। – Gabe

0

आप अंतरिक्ष

C:\123.txt :illegal 

के बाद एक अवैध चरित्र के साथ फ़ाइल का उपयोग कर सकते हैं। आप इस तरह एक अंतरिक्ष के साथ समाप्त फाइलें भी बना सकते हैं।

संबंधित मुद्दे