Obtaining the size of a file

John Craig jc at spl21.net
Sat Apr 21 03:17:51 EDT 2007


Thanks for the replies, everyone.  I've written several handlers in the 
past for things only to discover later that there is a command that does 
the task in a one liner - I just never found it in the docs - so I 
thought I'd ask.

I'm recursing through a (sometimes large) list of files and folders 
which can take a while, so I was trying to avoid another function call 
per line.

JC

Josh Mellicker wrote:
> Here are a couple of handlers that return the "humanSize" (a nicely 
> formatted version) of a file provided the complete file path and 
> filename:
>
>
> put humanSize(tPathAndFile) into fld "file size"
>
>
> FUNCTION humanSize tPathAndFile
>   put theFileDetail(tPathAndFile) into tFileDet
>   put item 2 of tFileDet + item 3 of tFileDet into tSize
>   IF tSize > 1000000 THEN
>     set the numberformat to "##.##"
>     return tSize/1000000 & " MB"
>   ELSE
>     set the numberformat to "##"
>     return tSize/1000 & " KB"
>   END IF
> END humanSize
>
> FUNCTION theFileDetail tPathAndFile
>     set the itemdel to "/"
>     put item -1 of tPathAndFile into tFile
>     delete item -1 of tPathAndFile
>     put "/" after tPathAndFile
>     set the defaultfolder to tPathAndFile
>     put the detailed files into tFiles
>     filter tFiles with urlencode(tFile) & comma & "*"
>     return tFiles
> END theFileDetail
>
>
> These only took a few days to write, I am not quite as fast as Richard 
> :-)
>
> On Apr 20, 2007, at 7:02 PM, Richard Gaskin wrote:
>
>> John Craig wrote:
>>
>>> Richard Gaskin wrote:
>>>> John Craig wrote:
>>>>> Does anyone know of a native rev. method to obtain the size of a 
>>>>> file without using shell or 'the detailed files'?
>>>>
>>>> What's the objection to using 'the detailed files'?
>>>>
>>>> It was added to the language specifically to provide what you're 
>>>> looking for.
>>>>
>>> It's clumsy and long winded.
>>
>> Revolution allows you to write your own custom commands and 
>> functions, so you can get the exact info you want in a call as simple 
>> as:
>>
>>    get FileSize(pFilePath)
>>
>>
>> Since it only takes a minute to write the dozen or so lines needed, 
>> I'll go ahead and do that for you:
>>
>> function FileSize pPath
>>   set the itemdel to "/"
>>   put urlEncode(last item of pPath) into tShortFileName
>>   delete last item of pPath
>>   put the directory into tSaveDir
>>   set the directory to pPath
>>   put the detailed files into tFiles
>>   set the directory to tSaveDir
>>   set the itemdel to comma
>>   put lineoffset( cr&tShortFileName&comma, cr&tFiles) into tLineNum
>>   if tLineNum > 0 then
>>     put line tLineNum of tFiles into tLine
>>     return item 2 of tLine + item 3 of tLine
>>   end if
>> end FileSize
>>
>>
>> Now you can drop than handy function into a library somewhere and use 
>> it whenever you need it.
>>     
>> -- Richard Gaskin
>>  Fourth World Media Corporation
>>  ___________________________________________________________
>>  Ambassador at FourthWorld.com       http://www.FourthWorld.com
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your 
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>





More information about the use-livecode mailing list