Hello,

-----Mensagem original-----
De: Pharo-dev [mailto:pharo-dev-boun...@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 <maxle...@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.barr...@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


Reply via email to