On 30 Apr 2017, at 19:31, Stephane Ducasse <stepharo.self@gmail.com> wrote:
Can you open a bug entry with clear examples? We should improve this part. After having the interpretation of strings sucks. I do not like it I prefer
FileLocator C / 'temp' / 'e8720bb4-b90a-0d00-9b1f-008709e5552b.txt'
Indeed. Also, you should never have to write the platform test, an important idea of FileSystem is to prevent that. Have you read the chapter on FileSystem from the Deep Into Pharo book ? Maybe some Windows users can help you better, but I don't recall others having trouble using FileSystem on Windows.
On Sun, Apr 30, 2017 at 6:54 PM, Casimiro de Almeida Barreto <casimiro.barreto@gmail.com> wrote: Hello,
-----Mensagem original----- De: Pharo-dev [mailto:pharo-dev-bounces@lists.pharo.org] Em nome de Sven Van Caekenberghe Enviada em: domingo, 30 de abril de 2017 05:30 Para: Pharo Development List <pharo-dev@lists.pharo.org> Assunto: Re: [Pharo-dev] Problem with FileSystem in WIndows
On 30 Apr 2017, at 09:48, Max Leske <maxleske@gmail.com> wrote:
Hi Casimiro,
have you tried using normal slashes in the path name? FileSystem should convert those to system path delimiters automatically. So:
It seems that FileSystem does not convert / into \ . ((FileSystem root) / 'c:\temp\tempfile.txt') writeStream won´t work but... FileStream fileNamed: 'C:\temp\tempfile.txt' works ok.
So... I could make it work for getting a stream both for Unix and Windows:
OSPlatform currentPlatformName = 'unix' ifTrue: [ [ str := (fs / fn) writeStream ] on: Exception do: [ ^ nil ] ] ifFalse: [ [ str := FileStream fileNamed: fn ] on: Exception do: [ ^ nil ] ].
And to delete:
OSPlatform currentPlatformName = 'unix' ifTrue: [ (FileSystem root / aFileName) delete ] ifFalse: [ rgx := RxMatcher forString: '^[A-Z]\:'. drive := rgx matchesIn: aFileName. drive := (drive at: 1) copyWithRegex: '\:' matchesReplacedWith: ''. ((FileLocator driveNamed: drive) / (aFileName copyWithRegex: '^[A-Z]\:' matchesReplacedWith: '')) delete ]
Not good, nor elegant nor anything close to good transparent code but... works :'(
C:/temp/e8720bb4-b90a-0d00-9b1f-008709e5552b.txt
And possibly you'll need a leading slash, as "C:" is a reference to the root of the file system:
/C:/temp/e8720bb4-b90a-0d00-9b1f-008709e5552b.txt
There is also the following option:
FileLocator C / 'temp' / 'e8720bb4-b90a-0d00-9b1f-008709e5552b.txt'
Cheers, Max
On 30 Apr 2017, at 03:15, Casimiro de Almeida Barreto <casimiro.barreto@gmail.com> wrote:
Good night all.
I´ve had trouble in windows concerning FileSystem.
((FileSystem disk root) / âC:\temp\e8720bb4-b90a-0d00-9b1f-008709e5552b.txtâ) delete
Fails as if the file didn´t exist. Message:
FileDoesNotExist: Path / âC:\temp\e8720bb4-b90a-0d00-9b1f-008709e5552b.txtâ
And I wonder what´s wrong. Because it works in linux and MacOS.
Trasncript show: ((FileSYstem disk root) / âC:\temp\e8720bb4-b90a-0d00-9b1f-008709e5552b.txtâ)
Returns:
File @ C:\temp\e8720bb4-b90a-0d00-9b1f-008709e5552b.txt\
And I wonder where the last \ came from and if is it that is messing all and how to fix things.
Best regards,
Casimiro Barreto
Livre de vÃrus. www.avast.com.
--- Este email foi escaneado pelo Avast antivÃrus. https://www.avast.com/antivirus