FileTools : Get some tools to work with files

1.Introduction

Once again I am here to present my second extension to community.
FileTools
Probably you have read in title , the name of extension is FileTools and features are similar to its name.
It provides tools to work with Files (folders also).

Latest Version: 4
Last Updated: 2020-02-15T18:30:00Z

2.Blocks

A wide range of blocks…

image

image

image

image

image

It has total 32 function/method blocks and 5 event blocks

3.Usage

A quick documentation for FileTools:-

component_method

Path to application specific directory i.e., /storage/emulated/0/Android/date/<package name>/files

Thanks to @bodymindpower

component_method%20(1)

Returns a list of available storage directories.

blocks%20(18)

Copies file from source to destination folder.

blocks

Copies file from source to destination asynchronously.Use this to copy big files to avoid runtime errors.

component_method%20(2)

Creates Application Specific Directory (/storage/emulated/0/Android/data/<package name>/files) in case it does not exists

blocks (1)

Creates a single directory.It triggers ‘Directory Created’ with boolean true or false
Note:It can not create parent directories.In this case, this will not work if ‘data’ does not exists

image

Deletes given file or folder.If it is directory then all subdirectories will be deleted and this can take some time.It triggers ‘FileDeleted’ event with boolean true or false.

blocks%20(21)
blocks%20(22)

Returns true if file or folder exists else false

blocks%20(23)

Gets file extension(mp3,mp4,txt,etc) of file.
Note: Sometimes it can return .file if it is unable to get file extension

blocks (2)

Returns files list from given directory (if it exists) .If you don’t want to use filter then use empty string.Also if don’t want to get subdirectories then set ‘withFolders’ to false else true.

blocks (3)

Works same as FilesList but it gets file list asynchronously which denies any oppertunity of runtime error in getting files list from a directory having so much files.It raises ‘GotFileList’ event with files list.

component_method

Returns file list from assets

blocks (4)

Returns file name from path if it exists

blocks (5)

Returns current size of file or folder if it exists

blocks (6)

Returns file path from file name.In this case it will return /mnt/sdcard/mFile.txt

blocks (7)

Returns folders list of given directory

component_method (1)

Returns free size of external storage in bytes.

blocks (16)

Converts file path to content uri

blocks (18)

Moves file from source to destination asynchronously.

blocks%20(26)

Checks that given path is complete path or not
For example: /testt.txt and /mnt/sdcard/Android/com.sunny.notez/files/testt.txt are not same.

blocks (15)

Returns that folder/file is executable or not

blocks (14)

Returns true if path is file else false

blocks (13)

Returns true if file/folder is hidden else false

blocks (11)

Returns true if file/folder is readable else false

blocks (12)

Returns true if file/folder is writable else false

blocks%20(46)

Last modified time of file/folder in given format

blocks%20(47)

Mime type of given file.In above case it will return text/plain

blocks%20(48)

Moves file from source to destination and deletes source file

blocks%20(49)

Converts content uri to file path

blocks (10)

Renames file without deleting it

blocks (9)

Returns total space of directory

blocks (8)

Returns free space of directory

4.Aix/Extension file

Here are two download links:
1.Download link 1: com.sunny.filetools.aix (33.3 KB)

2.Download link 2: File_Tools.aix - Google Drive

And a shortened download link for those who likes my work:
Download Link3: MiniURL

5.Credits

It was not only me who was included in making this extension.
A lot of people helped me to make this extension.
I want to say thank you @Deepanshu_Arya and @Wizard for helping me in making FileTools:heart_eyes:
Also I am very thankful to App Inventor as AI source files helped me very much in adding new methods :smiling_face_with_three_hearts:
StackOverFlow also helped me a lot in making FileTools
And a lot of thanks to @KodularCreator for this awesome platform:heart:
Honorable mention:
@bodymindpower for reporting some bugs and changes

6.Updates/Bug Fixes

ChangeLog Version 2

New blocks
Added two new blocks

Bug Fixes

  • All methods returning files list will now return empty list(if files list is empty) instead of runtime error
  • Mime Type method will return mime type with more accuracy.
  • Fixed some null pointer exceptions
ChangeLog Version 3

New blocks

Added three new blocks

component_method%20(5)

component_method%20(6)

component_method%20(4)

Changes
New version includes changes in some blocks

  • ‘Application Specific Directory’ now returns path to ASD
  • Replaced ‘File’ with ‘FileSystems’ in ‘Available Storage Directory’ block but I am not sure it is working or not

Bug Fixes

  • Some changes in ‘Available Storage Directory’ block
ChangeLog Version4

New blocks
Added 6 new blocks:
https://kodular-community.s3.dualstack.eu-west-1.amazonaws.com/original/3X/9/9/99c97c0ac0bdc347abd139a78a66bae1836a02c1.png

https://kodular-community.s3.dualstack.eu-west-1.amazonaws.com/original/3X/b/6/b665707c067ff494f40b1219cd67563d42a0dcd0.png

https://kodular-community.s3.dualstack.eu-west-1.amazonaws.com/original/3X/2/e/2ea438a5713b7a55b6bcf732fed5a42acb50f930.png

https://kodular-community.s3.dualstack.eu-west-1.amazonaws.com/original/3X/1/c/1c93ec84950099b3719033e2fdd521745156f0cc.png

https://kodular-community.s3.dualstack.eu-west-1.amazonaws.com/original/3X/a/3/a31c3ea8b79280f580fc2bb67ea036c8e9be4f22.png

https://kodular-community.s3.dualstack.eu-west-1.amazonaws.com/original/3X/2/5/25ec6652c111baa1e693f33cd1728a785b1c317b.png

Changes

  • Replaced path with name.Now it will find path automatically from file name (Thanks to App Inventor)
  • Some other minor changes

Bug Fixes

  • Now it is able to copy files from assets (Thanks @bodymindpower)
  • ‘AvailableStorageDirectories’ blocks is working now (Thanks @salem_m_s2021)
23 Likes

And here is a question:

Should I give Aia file?

  • Yes
  • No
  • Can’t say

0 voters

2 Likes

Nice Work Bro, Keep it up, :heart_eyes:

Thank you:heart_eyes:

1 Like

As far I know these volume/drive letters are only used on Windows. :sweat_smile:

And, what happens if we retrieve a list of files and folders? You know, it takes a while to list them. (I didn’t tested yet by the way) So I hope it is not stopping the app activity while this block finishes its job. :slightly_smiling_face:

I think you should remove my mention, I didn’t really help you because I didn’t get to your PM in time before you got a fix from someone else :sweat_smile:

Great job soon I will try it

Actually when I run code in Intellij IDEA it returned those names so I copy-pasted them here :sweat_smile:

For me it does not matters that you got my PM or not but you encouraged me to find solution myself.

Fun Fact(s)

1.The blocks Application Specific Directory was the block I asked to @Wizard for help.
2. Then I asked @Deepanshu_Arya for help and he gave me this method.

public String getPackageName()

But I found it hard to implement.
3.So I searched on Google and StackOverFlow and got some not working solutions.
4.I don’t know why I opened AppyBuilder Code Editor and got a public extension related to Version Name and Version Code.
I got my solution after some unsuccessful ‘modifications’

Those two blocks took half time of FileTools’ other blocks.

I don’t think my name’s should be there as the really things which helped you are:


Keep developing :+1:

9 Likes

Yes…you are right :heart_eyes:
StackOverFlow helped me a lot…

3 Likes

ChangeLog Version 2

New blocks
Added two new blocks

Bug Fixes

  • All methods returning files list will now return empty list(if files list is empty) instead of runtime error
  • Mime Type method will return mime type with more accuracy.
  • Fixed some null pointer exceptions
2 Likes

Have you used FileTools?

  • Yes
  • No

0 voters

What is your experience using FileTools?

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

0 voters

Yes, I just took a quick look and I noticed a few things compared to Taifun’s File extension:

  • FileTools.ApplicationSpecificDirectory does not give the full path like Taifun’s File extension, but (true / false). However, to access files in this folder, the full path (Companion / APK) is required. Please change / add this.

  • FileTools.AvailableStorageDirectories does not show any directory (Taifun does it)

I’ll take a closer look at the extension later …
Good work! :+1:

1 Like

Actually application specific directory returns true if ASD exists else false.
And thanks for bug report.
I will try to solve the problem as soon as possible.
Thank you.

Yes, I know, but we need also the path to access files in this folder. So please add this.

1 Like

:+1:
Will be added.

1 Like

ChangeLog Version3

New blocks

Added three new blocks

component_method%20(5)

component_method%20(6)

component_method%20(4)

Changes
New version includes changes in some blocks

  • ‘Application Specific Directory’ now returns path to ASD
  • Replaced ‘File’ with ‘FileSystems’ in ‘Available Storage Directory’ block but I am not sure it is working or not

Bug Fixes

  • Some changes in ‘Available Storage Directory’ block
1 Like

java.lang.NoClassDefFoundError: Failed resolution of: Ljava/nio/file/FileSystems;
Note: You will not see another error reported for 5 seconds.

1 Like

Thanks :hugs:

1 Like