Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #37375

Re: From java.nio.Path to Unix-style String on Windows

From Sebastian <nowhere@nirvana.org>
Newsgroups comp.lang.java.programmer
Subject Re: From java.nio.Path to Unix-style String on Windows
Date 2017-09-02 00:12 +0200
Organization albasani.net
Message-ID <oocm0n$ra5$1@news.albasani.net> (permalink)
References <123f72bc-6240-488c-a007-0048d4468bee@googlegroups.com> <oo8u3e$3is$1@dont-email.me>

Show all headers | View raw


Am 31.08.2017 um 14:10 schrieb Eric Sosman:
> On 8/31/2017 5:48 AM, Oliver Ruebenacker wrote:
>>
>>       Hello,
>>
>>    I have an app that generates command lines to be executed by Bash
>> (the popular Unix shell). The command lines contain file names that
>> are provided as java.nio.Path which are converted to String and then
>> inserted.
>>
>>    When run on Unix or like, a Path is converted to String Unix-style
>> (e.g. /a/b/c), and that is just as Bash expects it.
>>
>>    If run on Windows, however, a Path is converted to String
>> Windows-style (e.g. C:a\b\c), and that fails, because Bash expects
>> Unix-style file paths, even if it is run on Windows (e.g. Cygwin Bash,
>> or Bash on Windows).
>>
>>    How can I make sure a Path is always converted to String
>> Unix-style, even if run on Windows?
>
>     The "clean" (but probably impractical) way would be to install a
> Unix-style FileSystemProvider on the Windows machine, and use it to
> create and string-ize the Path.  There are only two FSP's in the
> standard Windows JRE (one for Windows files, one for ZIP archives),
> so I'm not sure how you would manage this ...
>
>     The "dirty" (but probably feasible) way would be to string-ize
> the Path, split the String on System.getProperty("file.separator"),
> and reassemble the pieces using "/" between them.  You would still
> need to strip away the leading "C:" (or "D:" or "//share"), which
> is more than a little bit hackish, but I can't see any way to avoid
> the hackery.
>
Apache Commons IO has a method FilenameUtils#separatorsToUnix, see
https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FilenameUtils.html#separatorsToUnix(java.lang.String)

I don't get the part about stripping away the drive letters. Paths like 
C:/blabla/...   are perfectly acceptable to my bash (GitBash on Windows).

-- Sebastian

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

From java.nio.Path to Unix-style String on Windows Oliver Ruebenacker <curoli@gmail.com> - 2017-08-31 02:48 -0700
  Re: From java.nio.Path to Unix-style String on Windows Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-08-31 08:10 -0400
    Re: From java.nio.Path to Unix-style String on Windows Sebastian <nowhere@nirvana.org> - 2017-09-01 22:35 +0200
    Re: From java.nio.Path to Unix-style String on Windows Sebastian <nowhere@nirvana.org> - 2017-09-02 00:12 +0200
      Re: From java.nio.Path to Unix-style String on Windows Mike Amling <mamling@chaff.us> - 2017-09-02 22:05 -0500
  Re: From java.nio.Path to Unix-style String on Windows Eric Douglas <e.d.programmer@gmail.com> - 2017-08-31 05:50 -0700

csiph-web