[C#] Bestand pad te lang

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Beste tweakers,

Ik loop door een map met bestanden en ik gebruik de volgende functie om het bestand pad terug te krijgen
code:
1
string Path = System.IO.Path.GetFullPath(File);


Echter hij geeft bij (onderstaand) bestand aan dat het pad te lang is? (Voorbeeld)
code:
1
F:\MyDocuments\Visual Studio 2005\ProjectsOld\Backup\Sandbox\CS\Trashbin\ClickOnceDeploymentTestFileShare\ClickOnceDeploymentTestFileShare\bin\Debug\ClickOnceDeploymentTestFileShare.publish\ClickOnceDeploymentTestFileShare_1_0_0_3


Ook wanneer ik de hele mappen structuur via winrar inpak geeft hij een error op precies dezelfde file.

Ok, nu zegt google dat de max lengte 248 is dus dat je daar niet overheen mag komen.
Maar hoe backup of lees je dan deze bestanden in...want voor windows zijn ze toch ook gewoon bruikbaar?

Maar goed het probleem is er dus ben ik aan het zoeken naar een oplossing..misschien iets met aliassen. Is er iemand die hier een idee voor heeft?

Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 18:42

remco_k

een cassettebandje was genoeg

Ik neem maar even aan dat je de foutmelding -niet- krijgt op deze regel:
code:
1
string Path = System.IO.Path.GetFullPath(File);

Mijn vraag dus: op welke regel code komt de fout voor?

Edit:
Dat kan dus wel volgens de documentatie:
The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
En de oplossing staat inmiddels in de post onder mij.

[ Voor 47% gewijzigd door remco_k op 20-05-2008 11:46 ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Zie MSDN hier en dan het kopje "Maximum Path Length". Komt er dus op neer dat een pad in windows niet langer mag zijn dan MAX_PATH en dat is 260 karakters.
Beter lezen dus.

Mogelijke oplossing is gewoon de boel te faken. Wat je kunt doen is gewoon met relatieve paden werken etc. Je zou een interne structuur bij kunnen houden in een Tree. Wanneer je een volledig pad nodig zou hebben dan bouw je dat gewoon op.
Een string kun je namelijk veel langer maken en directories parsen is redelijk eenvoudig.

[ Voor 44% gewijzigd door MTWZZ op 20-05-2008 11:43 ]

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Mijn vraag dus: op welke regel code komt de fout voor?
Ik krijg een exception (Path too long) op de code regel
code:
1
string Path = System.IO.Path.GetFullPath(File);


Hmm ok relatieve paden...dus zegmaar een soort alias maken van bijv. c:\enz\enz\enz naar alias:a
en dan alias:a\bestandsnaam.exe ofzo

hmm ga ik eens even mee experimenteren?

Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 148% gewijzigd door ? ? op 25-01-2013 09:51 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
era.zer schreef op dinsdag 20 mei 2008 @ 11:51:
[code]
(en gebruik eens geen Path en File namen voor je variabelen, deze worden al door .net gebruikt. Noem ze desnoods "aFile")
Er wordt zoveel gebruikt door .Net. Gebruik rustig/gewoon "path" (het is de Path class die .Net gebruikt) of "file" en zolang je gewoon de complete namespace gebruikt (zoals TS doet) om de juiste classes aan te spreken is er geen enkel probleem om je variabelen gewoon een juiste naam te geven zonder vage prefixes.
Met jouw redenatie kun je nog amper (zinnige) variabelen verzinnen; alles zit wel érgens in .Net en anders misschien later/ooit in je project nog in een andere 3rd party component ofzo. En dan zie ik nog liever dus iemand "fileinfo" gebruiken dan de (nietszeggende) "fi" variabele.

[ Voor 6% gewijzigd door RobIII op 20-05-2008 13:36 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 21-04 16:18
RobIII schreef op dinsdag 20 mei 2008 @ 13:35:
[...]

Er wordt zoveel gebruikt door .Net. Gebruik rustig/gewoon "path" (het is de Path class die .Net gebruikt) of "file" en zolang je gewoon de complete namespace gebruikt (zoals TS doet) om de juiste classes aan te spreken is er geen enkel probleem om je variabelen gewoon een juiste naam te geven zonder vage prefixes.
Met jouw redenatie kun je nog amper (zinnige) variabelen verzinnen; alles zit wel érgens in .Net en anders misschien later/ooit in je project nog in een andere 3rd party component ofzo. En dan zie ik nog liever dus iemand "fileinfo" gebruiken dan de (nietszeggende) "fi" variabele.
@ RobIII: klein detail: topicstarter gebruikt "Path" en niet "path".

@ vorlox: Je zou er omheen kunnen door het pad halverwege te substen. Dat is een workaround die wij hier ook veel gebruiken. Of "long UNCs" gebruiken.

[ Voor 13% gewijzigd door riezebosch op 20-05-2008 13:55 ]

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
riezebosch schreef op dinsdag 20 mei 2008 @ 13:48:
[...]

@ RobIII: klein detail: topicstarter gebruikt "Path" en niet "path".
Klopt, maar dat vind ik nog geen ramp omdat hij de .Net-Path class benadert met een FQN (Fully Qualified Namespace). Maar true, hier had ik persoonlijk ook voor de lowercase variant gekozen.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 123% gewijzigd door ? ? op 25-01-2013 09:51 ]


Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 21-04 16:18
era.zer schreef op dinsdag 20 mei 2008 @ 14:48:
[...]

my point, stond in hoofdletters in m'n reply (tuurlijk mag en kan het allemaal, maar zo kan je ook de letters l vervangen door een (één) 1 in je code :) => allemaal zaken die het minder makkelijk maken ze te lezen.
Maar ik denk dat FileInfo TS z'n probleem oplost?
Tip: gebruik Consolas.

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:41
Wtf heeft een lettertype hiermee te maken? 8)7 (Noch met het probleem van de TS, noch met de opmerking van era.zer)

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 21-04 16:18
sig69 schreef op dinsdag 20 mei 2008 @ 15:12:
Wtf heeft een lettertype hiermee te maken? 8)7 (Noch met het probleem van de TS, noch met de opmerking van era.zer)
era.zer schreef op dinsdag 20 mei 2008 @ 14:48:
[...]

my point, stond in hoofdletters in m'n reply (tuurlijk mag en kan het allemaal, maar zo kan je ook de letters l vervangen door een (één) 1 in je code :) => allemaal zaken die het minder makkelijk maken ze te lezen.
Maar ik denk dat FileInfo TS z'n probleem oplost?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:41
We gaan nu wel erg offtopic, maar dat consolas is ook niet alles. Zonder cleartype blijft er weinig van over. Overigens heb ik totaal geen moeite om het verschil in 1 en I te zien in Courier New, als je daar toevallig op doelde. Maar goed, dit gaat helemaal nergens meer over...

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • Dommel
  • Registratie: Maart 2001
  • Laatst online: 30-05 15:55

Dommel

Professioneel Software Sloper

Nu heb ik niet zoveel verstand van C# maar is het zo dat je wel spaties mag gebruiken in je path?

Als ik namelijk kijk naar die regel van "F:\MyDocuments\Visual Studio 2005\Pro..." dan staan er in het stukje van Visual Studio 2005 wel spaties en verder geen. Vandaar mijn vraag :)

Lego Taj Mahal te koop --> https://gathering.tweakers.net/forum/list_messages/2109838


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dommel schreef op dinsdag 20 mei 2008 @ 15:41:
Nu heb ik niet zoveel verstand van C# maar is het zo dat je wel spaties mag gebruiken in je path?
:D :Y Welkom in 2008 ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Viper®
  • Registratie: Februari 2001
  • Niet online
vorlox schreef op dinsdag 20 mei 2008 @ 11:38:
Beste tweakers,

Ik loop door een map met bestanden en ik gebruik de volgende functie om het bestand pad terug te krijgen
code:
1
string Path = System.IO.Path.GetFullPath(File);


Echter hij geeft bij (onderstaand) bestand aan dat het pad te lang is? (Voorbeeld)
code:
1
F:\MyDocuments\Visual Studio 2005\ProjectsOld\Backup\Sandbox\CS\Trashbin\ClickOnceDeploymentTestFileShare\ClickOnceDeploymentTestFileShare\bin\Debug\ClickOnceDeploymentTestFileShare.publish\ClickOnceDeploymentTestFileShare_1_0_0_3


Ook wanneer ik de hele mappen structuur via winrar inpak geeft hij een error op precies dezelfde file.

Ok, nu zegt google dat de max lengte 248 is dus dat je daar niet overheen mag komen.
Maar hoe backup of lees je dan deze bestanden in...want voor windows zijn ze toch ook gewoon bruikbaar?

Maar goed het probleem is er dus ben ik aan het zoeken naar een oplossing..misschien iets met aliassen. Is er iemand die hier een idee voor heeft?
toon volledige bericht
Ik snap je vraag/probleem niet helemaal.

http://msdn.microsoft.com/en-us/library/aa365247.aspx

Hier staat uitleg over de MAX_PATH van Windows en die mag max 260 characters zijn. Dit is gewoon een beperking van Windows icm long filename systeem. Technisch is er ondersteuning tot 32000 characters (min of meer)

Waarom windows wel met hele lange paden kan werken is inderdaad door relatieve paden te gebruiken:
For functions that manipulate files, the file names can be relative to the current directory. A file name is relative to the current directory if it does not begin with one of the following
Als je dus naar je windows folder zou gaan gebruikt windows niet het c:\windows\ ... als pad maar gewoon je c:\windows als 'root' folder en gaat vanuit daar paden lezen. Op die manier kun je genest dus diepere paden krijgen etc.

Kortom: Je paden zijn gewoon te lang. Of haal dmv de Application.StartupPath() of Application.ExecutablePath() het pad op en werk vanuit daar verder.

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
wow dit gaat hard...ok ok opmerkingen allemaal gelezen... code was ff een voorbeeldje..dus idd niet te veel letten op notatie AUB. Was zelfs te lui om resharper te gebruiken...ghe

Mijn idee was om een progje te maken zoals SyncToy echter dan via FTP..naar een linux server.
En ik wil graag voordat alle bestanden geupload worden rare bestandsnaam notaties zoals c:\doc is met spaties.doc omzetten naar c:\doc_met_spaties.doc voordat ik ga FTP-en...echter daarvoor loop ik dus door een hele dir structuur heen...en mijn test dir (Mijn documenten) ;) is aardig vervuild en diep genest...dus vanaf StartUpPath of winpath werken zal niet gaan.
Wat ik natuurlijk wel kan doen is meerdere directories instellen en dan een maximale diepte instellen.. Tis nog niet te makkelijk zucht

Echter ik moet nog ff spieken naar die long UNC paths...dat klinkt interessant.

Het lijkt er idd op dat ik beter het pad als aparte string moet opslaan of in een tree of een paar hashtables of zo en dan de hash van het pad aan het bestand knopen...dan kan ik altijd het orginele pad teughalen en per dir aanmaken.

Shit super dat gaart helemaal werken.
En dan die variabele namen....ik krijg altijd op mijn kop omdat ik mijn vars met hoofdletters schrijf..dus eigenlijk had idd Path als path geschreven moeten worden..maarja dat krijg je ervan als je de ene keer php style getCustomer of C# GetCustomer of js is weer getCustomer....aargh hehehe ;)

[ Voor 24% gewijzigd door vorlox op 20-05-2008 16:13 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kun je niet gewoon je CurrentWorking directory op "F:\MyDocuments\Visual Studio 2005\ProjectsOld\Backup\Sandbox\CS\Trashbin\ClickOnceDeploymentTestFileShare\ ClickOnceDeploymentTestFileShare\" zetten ( Uiteraard dynamisch zodat het bij andere directories ook werkt ) en dan met relatieve paden werken zoals "bin\Debug\ClickOnceDeploymentTestFileShare.publish\ClickOnceDeploymentTestFileShare_1_0_0_3".

[ Voor 47% gewijzigd door Woy op 20-05-2008 16:14 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
rwb schreef op dinsdag 20 mei 2008 @ 16:13:
Kun je niet gewoon je CurrentWorking directory op "F:\MyDocuments\Visual Studio 2005\ProjectsOld\Backup\Sandbox\" zetten ( Uiteraard dynamisch zodat het bij andere directories ook werkt ) en dan met relatieve paden werken zoals "CS\Trashbin\ClickOnceDeploymentTestFileShare\ClickOnceDeploymentTestFileShare\bin\Debug\ClickOnceDeploymentTestFileShare.publish\ClickOnceDeploymentTestFileShare_1_0_0_3".
uh nee niet helemaal want ik wil heel "F:\MyDocuments" hebben en niet alleen die file
maar als je recursief door "F:\MyDocuments" heen leest dan kom je bovenstaande file uiteindelijk wel tegen. 8)7

Oh ook nog even ter info
Correctie
FileInfo lijkt mijn probleem WEL op te lossen.. Nee of toch niet hij lijkt deze te lange paden gewoon over te slaan pff ik ies gek
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private void ReadFiles(string path)
        {
            try
            {
                foreach (string file in Directory.GetFiles(path))
                {
                    string basename = Path.GetFileName(file);
                    FileInfo fileInfo = new FileInfo(path);
                    AddLogMessage(basename, fileInfo.DirectoryName, true);
                }
                
            }
            catch(Exception ex)
            {
                AddLogMessage(ex.Message, "", true);
            }
            foreach (string subPath in Directory.GetDirectories(path))
                ReadFiles(subPath);

        }

[ Voor 39% gewijzigd door vorlox op 20-05-2008 16:48 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
vorlox schreef op dinsdag 20 mei 2008 @ 16:15:
[...]


uh nee niet helemaal want ik wil heel "F:\MyDocuments" hebben en niet alleen die file
maar als je recursief door "F:\MyDocuments" heen leest dan kom je bovenstaande file uiteindelijk wel tegen. 8)7
Maar je kunt toch ook recursief je CurrentWorking directory aanpassen ( Met een limiet van een bepaalde lengte )?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
rwb schreef op dinsdag 20 mei 2008 @ 16:32:
[...]

Maar je kunt toch ook recursief je CurrentWorking directory aanpassen ( Met een limiet van een bepaalde lengte )?
hmm uh ja dat kan....? natuurlijk...shit . Huh maargoed is dankzij FileInfo dus niet nodig...en waarom moeilijk doen als het niet hoeft. ghe

[ Voor 14% gewijzigd door vorlox op 20-05-2008 16:44 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik bedoel iets als het volgende
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void RecursiveDirectoryTraversal(string basePath)
{
    Directory.SetCurrentDirectory(basePath);
    ProcessDir(basePath);
}

public void ProcessDir( string fullDirPath )
{
    string[] files = Directory.GetFiles(".");
    //Do something with files
    string[] dirs = Directory.GetDirectories(".");
    foreach (string dir in dirs)
    {
        //Do something with dir/fullDirPath
        ProcessSubDir(fullDirPath, dir.SubString(dir.LastIndexOf('\\') + 1) );
    }
}

private void ProcessSubDir(string baseDir, string dir)
{
    Directory.SetCurrentDirectory(dir);
    ProcessDir(baseDir + "\\" + dir);
    Directory.SetCurrentDirectory("..");
}

Heb het niet getest dus weet niet of het werkt. Maar zo'n soort idee. Het verdient niet echt de schoonheidsprijs, maar je moet wat om om de beperkingen heen te gaan.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 31-05 15:48
Ik vraag me wel af of hier nu een structurele oplossing voor is... Zelfs als je je CurrentWorking directory aanpast, heb je dan geen limiet van 508 (248+260) karakters?

Is er iemand met zulke diepe directory trees die dat kan uittesten?? ;)

Rwb: ik dacht ook aan zoiets maar

Als je bvb een file wil renamen moet je een MoveTo doen met het volledige pad (of pad relatief t.o.v. CurrentWorkingDir) ... (tenzij ik ergens een methode over het hoofd zie)

bvb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        static void Main(string[] args)
        {
            string basePath = @"C:\Temp\Carr\New Folder";
            DirectoryInfo dir = new DirectoryInfo(basePath);
            
            DoRecursiveActionForFileInDir(dir, file => file.MoveTo(Path.Combine(file.DirectoryName, file.Name.Replace(' ','_')));
            

        }

        public static void DoRecursiveActionForFileInDir(DirectoryInfo dir, Action<FileInfo> action )
        {
            foreach (var file in dir.GetFiles())
            {
                action(file);
            }

            foreach(var subdir in dir.GetDirectories())
            {
                DoRecursiveActionForFileInDir(subdir, action);
            }
        }

[ Voor 73% gewijzigd door masterpoi op 20-05-2008 16:52 ]


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 114% gewijzigd door ? ? op 25-01-2013 09:51 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
masterpoi schreef op dinsdag 20 mei 2008 @ 16:46:
Ik vraag me wel af of hier nu een structurele oplossing voor is... Zelfs als je je CurrentWorking directory aanpast, heb je dan geen limiet van 508 (248+260) karakters?
Nee want je past telkens je CWD ook relatief aan dus je bent dan in theorie alleen gebonden aan dat een directory niet langer als 248 mag zijn. En je BaseDirectory mag ook niet langer als 248 zijn ( of die moet je ook stukje voor stukje relatief zetten )
Rwb: ik dacht ook aan zoiets maar

Als je bvb een file wil renamen moet je een MoveTo doen met het volledige pad... (tenzij ik ergens een methode over het hoofd zie)
Een MoveTo kan je toch ook met een relatief path doen?

edit:
Ik heb mijn code even getest en die doet het op normale lengte paden ieder geval wel. ( Mischien wel netjes om even een GetCurrentDirectory te doen en die daarna weer terug te zetten ). Hoe het met lange paden gaat heb ik niet getest.

[ Voor 13% gewijzigd door Woy op 20-05-2008 17:00 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 31-05 15:48
Voor relative paden is er helemaal geen limiet dan? Dan moet het werken idd...

[ Voor 20% gewijzigd door masterpoi op 20-05-2008 16:57 ]


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
era.zer schreef op dinsdag 20 mei 2008 @ 16:51:
Waarom gebruik je nog steeds Path.GetFileName() ?
DirectoryInfo hoort bij FileInfo
Directory en File zijn de tegenhangers (doen zelfde, maar bij de een heb je een string[] als return, bij de andere objecten)

En post je langste pad eens?
Gewoon in Windows zelf, is er een limiet: ik kom niet verder dan "C:\fjkdfsldjflsdjmkfljsdlmjfmksldjfklsjdkfljskdlfjksdljfklsdjkfdsjklfsdf\fjkdfsldjfls djmkfljsdlmjfmksldjfklsjdkfljskdlfjksdljfklsdjkfdsjklfsdf\fjkdfsldjflsdjmkfljsdlmjfmksldjfklsjdkfl jskdlfjksdljfklsdjkfdsjklfsdf\fjkdfsldjflsdjmkfljsdlmjfmksldjfkl"

Als het in windows niet kan, waarom zou je het dan moeten implementeren in je code?
Wel kun je een nieuw pad beginnen: bv. de X: schijf koppelen aan het lange pad. Dan ben je weer even zoet voor Windows
Het pad wat in de topic start staat is de langste die ik heb

HAHAHa fun.. ik heb net even uitgetest en ben naar die betreffende subdir gegaan en probeerde nog een map aan te maken en dan roeptie "Kan nieuwe map niet aanmaken" Pad is ongeldig

Dus ik was close aan de limiet maar ik was er nog niet helemaal :P

[ Voor 11% gewijzigd door vorlox op 20-05-2008 17:06 ]


Acties:
  • 0 Henk 'm!

  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 31-05 15:48
vorlox schreef op dinsdag 20 mei 2008 @ 17:01:
[...]


Het pad wat in de topic start staat is de langste die ik heb
Die is toch maar 230 karakters? :?

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
masterpoi schreef op dinsdag 20 mei 2008 @ 17:05:
[...]


Die is toch maar 230 karakters? :?
juist en toch krijg ik die melding? Vandaar het topic ghe ;)

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
toch leuk dit.

ik maak altijd een mapje backup met rotzooi en als die te vol wordt maak ik in de map backup een map backup en dan schuif ik daaralles naartoe en dan maak ik gewoon een nieuwe map backup waarik de vorige backup naar toe schuif....hehehe ;)

Acties:
  • 0 Henk 'm!

  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 31-05 15:48
Toch mee oppassen, blijkbaar veroorzaakt het ook allerhande andere problemen:

http://www.markwilson.co....ng-path-names-on-ntfs.htm

Acties:
  • 0 Henk 'm!

  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 31-05 15:48
En hier een experiment:

http://www.codinghorror.com/blog/archives/000729.html

En mogelijke oplossing:
The Unicode versions of several functions permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters in length. To specify that kind of path, use the "\\?\" prefix. The maximum path of 32,000 characters is approximate, because the "\\?\" prefix can be expanded to a longer string, and the expansion applies to the total length.


For example, "\\?\D:\<path>". To specify such a UNC path, use the "\\?\UNC\" prefix. For example, "\\?\UNC\<server>\<share>". These prefixes are not used as part of the path itself. They indicate that the path should be passed to the system with minimal modification, which means that you cannot use forward slashes to represent path separators, or a period to represent the current directory. Also, you cannot use the "\\?\" prefix with a relative path. Relative paths are limited to MAX_PATH characters.

...........


I think 260 characters of path is more than enough rope to hang ourselves with. If you're running into path length limitations, the real problem isn't the operating system, or even the computers. The problem is the deep, dark pit of hierarchies the human beings have dug themselves into.

[ Voor 114% gewijzigd door masterpoi op 20-05-2008 17:19 ]


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 103% gewijzigd door ? ? op 25-01-2013 09:51 ]


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Ja, het is me al duidelijk. De exeption treed op als bij de code regel
code:
1
string path = System.IO.Path.GetFullPath(fullFilePath);


En dat klopt eigenlijk ook omdat de map lengte en de bestandslengte bij elkaar worden opgeteld.
Dan komen we hier uit op 267 en dat mag dus niet.
De oplossingen van masterpoi , era.zer en nog iemand kunnen dus wel omdat deze niet de hele fullpath opvragen maar die zet ik zelf wel in elkaar m.b.v een string.

Ok dat moet lukken.
Super Top _/-\o_

Haha ik maak geen grapje ik kan het bestand wat in die diepe map staat niet verwijderen in "Verkenner" maar hij geeft nog wel de Optie Kopieeren naar :P

[ Voor 15% gewijzigd door vorlox op 20-05-2008 17:34 ]

Pagina: 1