Hello, I understood the problem with pathString and I'm ok with your opinion but I would like to come back on the first one "fullfilename" as I understand it, it must be a basename ? When I read the implementation with fullfilename which would be a path '/aPath/foo.zip'. newName := fullFileName copyUpToLast: FileSystem disk extensionDelimiter. newName would be in that case : /aPath/foo' unzipped := FileStream newFileNamed: (pathString asFileReference / newName) fullName. Here the newFileNamed: parameter will be '/aPathDestination/aPath/foo' so it could be something like '/home/home/foo' it's not correct according to me. As I understand it, this message only works if fullFileName is 'foo.zip' and is in the folder which contain Pharo image as we can't specify a path. Valentin 2016-04-19 20:40 GMT+02:00 stepharo <stepharo@free.fr>:
Le 19/4/16 15:53, Valentin Ryckewaert a écrit :
I mean, fileRef basename is myZip.zip and workingDirectory is the place files will go after being unziped but how does we find the file named fileRef basename ?
'foo.txt' asFileReference -> a fileRef
'foo.txt' asFileReference basename.
(FileSystem disk workingDirectory / 'foo.txt') basename
this is explained in the File chapter.
Can you open a bug entry to improve the comment of the method?
2016-04-19 15:46 GMT+02:00 stepharo <stepharo@free.fr>:
Le 19/4/16 15:41, Valentin Ryckewaert a écrit :
How does unzip:to: access to the file ?
I do not get your question?
It must be in the workingDirectory?
Read the code luke....
unzip: fullFileName to: pathString "Unzip the contents of the file specified by the full path name fullFileName to the location given by pathString."
| zipped buffer unzipped newName | newName := fullFileName copyUpToLast: FileSystem disk extensionDelimiter. pathString asFileReference ensureCreateDirectory. unzipped := FileStream newFileNamed: (pathString asFileReference / newName) fullName.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unzipped ifNil: [self error: pathString, ' looks incorrect']. [ unzipped binary. zipped := self on: (FileStream readOnlyFileNamed: fullFileName). buffer := ByteArray new: 50000. [zipped atEnd] whileFalse: [unzipped nextPutAll: (zipped nextInto: buffer)]] ensure: [ zipped close. unzipped close]. ^ newName
2016-04-19 15:06 GMT+02:00 Hernán Morales Durand < hernan.morales@gmail.com>:
I use it a lot to uncompress external resources like this:
fileRef := .... GZipReadStream unzip: fileRef basename to: FileSystem workingDirectory.
but it could be used to pass a directory as String I guess. Comment should be corrected.
2016-04-19 9:54 GMT-03:00 stepharo < <stepharo@free.fr>stepharo@free.fr> :
unzip: fullFileName to: pathString "Unzip the contents of the file specified by the full path name fullFileName to the location given by pathString."
so we would expect to pass a string in the second argument?
the unique sender of it in the system
unzip: fullFileName "Unzip the contents of a gzipped file specified by its full file name to the current working directory"
^ self unzip: fullFileName to: FileSystem disk workingDirectory
but the implementation seems to indicate that fullFileName is should be a string as well as pathString
unzip: fullFileName to: pathString "Unzip the contents of the file specified by the full path name fullFileName to the location given by pathString."
| zipped buffer unzipped newName | newName := fullFileName copyUpToLast: FileSystem disk extensionDelimiter. pathString asFileReference ensureCreateDirectory. unzipped := FileStream newFileNamed: (pathString asFileReference / newName) fullName. unzipped ifNil: [self error: pathString, ' looks incorrect']. [ unzipped binary. zipped := self on: (FileStream readOnlyFileNamed: fullFileName). buffer := ByteArray new: 50000. [zipped atEnd] whileFalse: [unzipped nextPutAll: (zipped nextInto: buffer)]] ensure: [ zipped close. unzipped close]. ^ newName
Am I correct to think that the comments are not really good enough?
Stef