VFSLib Dropbox Example
Please read the following steps to use the VFSLib Java library. This example demonstrates the usage of the Dropbox © provider included in the VFSLib ZIP/TGZ archives.
The Java example code is based on the original Apache Commons VFS 2.0 classes like DefaultFileSystemManager and thus should integrate seamlessly into existing implementations.
- Step 1: Download VFSLib ZIP/TGZ
- Step 2: Running The Dropbox Example
- Step 3: The Dropbox Example Step By Step
Step 1: Download VFSLib ZIP/TGZ
First of all please download the current VFSLib ZIP/TGZ archive on your computer. Choose the archive which can be best extracted from your computer (e.g. ZIP for Windows, TGZ for UNIX, ...). The ZIP archive may be unzipped directly from Ant build scripts using the unzip task into a local directory of your choice. Of course you can extract the VFSLib ZIP archive manually with WinZIP or other ZIP extraction tools.
The ZIP archive contains various files and resources for VFSLib. The API (Javadoc) can be displayed by opening the index.html file with your favorite Internet browser. In the example folder you can find the precompiled Dropbox example code to be executed directly or using Apache Ant.
The extlib folder contains the additional libraries needed to run the VFSLib properly. If you plan to use the Dropbox provider you will have to add the Commons libraries, Dropbox/Jackson, and Jaxen/JDOM to the classpath. The lib folder contains the VFSLib libraries including some language packs (English and German at the moment). The English language pack is mandatory and must be included always along with the main VFSLib JAR file. The other language packs are only needed if your application supports these languages.
In the license folder you can find the VFSLib license as well as the licenses for the 3rd party JAR files residing in extlib. Please take a look at the README.html as a condensed overview of the package. The current release notes for the package can be found in the release_notes.html file.
![]() |
A compatible Java Runtime Environment (JRE) 1.8+ must be installed prior to the installation of Apache Ant. Most developers can use their normal development environment here. Some IDEs like Netbeans which include a compatible JRE and Ant installation may support the direct execution of Ant build scripts. |
Step 2: Running The Dropbox Example
Please go create a Dropbox account and create an application via the Dropbox website, then grant your application the following permissions via the Dropbox App Console:
- account_info.read
- files.metadata.read
- files.content.write
- files.content.read
The VFSLib provider for Dropbox example can be easily executed using Apache Ant.
Please open a command line (e.g. MS-DOS under Windows) and type the following commands:
cd [VFSLib installation folder]\example
apache-ant-1.8.2\bin\ant -file build-examples.xml run-dropbox
![]() |
Anyway you will need to run the example in a graphical environment since the classes display dialogs to prompt the user for the parameters necessary for Dropbox. |
As the figures show you are asked to specify key and secret for your application. The key and secret generated by Dropbox can be used to fill in the dialog input fields.
Figure 1: Dropbox example application key dialog
Figure 2: Dropbox example application secret dialog
Figure 3: Dropbox example access token/code
The next dialog is displayed (see figure 3) where you can enter the code (access token) from Dropbox. Simultaneously the example opens your favorite Internet browser showing the Dropbox website to get this code. Remember that it may be necessary to log in to Dropbox first. The access token is necessary to allow your application to access your Dropbox account.
If all input has been done the example will continue in the background by performing some simple file operations using the specified Dropbox account. Please check out the output of the example script.
![]() |
If you already have an application key and secret as well as a working access token/code from Dropbox feel free to edit the build-examples.xml file and insert your values. You will have to uncomment the arg tag line. The input dialogs will not be displayed any longer. |
Step 3: The Dropbox Example Step By Step
Let's take a closer look at the Dropbox example implementation. The first thing to do is to configure the VFSLib class which is the central class of the VFSLib library:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Setup the main VFSLib instance, get evaluation license key from Leisenfels website VFSLib vfslib = new VFSLib(); vfslib.setLicenseFile(licensefile); // Import from file // We use the default file system manager here DefaultFileSystemManager fsmanager = (DefaultFileSystemManager) VFS.getManager(); // Add Dropbox provider to VFS DbxFileProvider provider = vfslib.addProviderDropbox(fsmanager, appkey, appsecret, clientidentifier, language); String scheme = vfslib.getSchemeDropbox(); // Pass access token over to VFSLib to access the Dropbox account FileSystemOptions options = new FileSystemOptions(); DbxFileSystemConfigBuilder builder = new DbxFileSystemConfigBuilder(); builder.setAccessToken(options, token); // Setup proper account name, the user name for Dropbox URLs (default: anonymous) // dropbox://[name]:[token]@dropbox.com String username = "vfslibtest"; builder.setAccountDisplayName(options, username); |
Configuration of the VFSLib (see ExampleDropbox.java)
List a Dropbox Folder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
String uri = scheme + "://" + username + "@dropbox.com"; try { FileObject fileobj = fsmanager.resolveFile(uri, options); if (fileobj.getType().equals(FileType.FOLDER)) { FileObject[] childs = fileobj.getChildren(); for (FileObject next : childs) { if (next.getType().equals(FileType.FOLDER)) { System.out.println(" FOLDER: " + String.valueOf(next)); } else System.out.println(" FILE: " + String.valueOf(next)); } } else System.out.println(" Entry " + uri + " is not a folder"); } catch (Exception e) { e.printStackTrace(); } |
List a Dropbox folder (see ExampleDropbox.java)
Create a Dropbox Folder
1 2 3 4 5 6 7 8 9 10 11 12 |
String tempfolder = scheme + "://" + username + "@dropbox.com/0123456789abcdefghijklmnopqrstuvwxyz"; boolean success = false; try { FileObject fileobj = fsmanager.resolveFile(tempfolder, options); if (!fileobj.exists()) { fileobj.createFolder(); success = fileobj.exists(); } } catch (Exception e) { e.printStackTrace(); } |
Create a Dropbox folder (see ExampleDropbox.java)
Upload a File To Dropbox, Get File Type, Last Modified, And Size
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
String content = "Hello world!"; String encoding = "ISO-8859-1"; // Upload a file to Dropbox. Get file type, last modified, and size. String tempfile = tempfolder + "/readme.txt"; try { FileObject fileobj = fsmanager.resolveFile(tempfile, options); fileobj.getContent().setAttribute(VFSLibConstants.ATTR_CONTENT_LENGTH, content.getBytes(encoding).length); OutputStream ostream = fileobj.getContent().getOutputStream(); ostream.write(content.getBytes(encoding)); ostream.flush(); ostream.close(); success = fileobj.exists(); System.out.println(" TYPE: " + fileobj.getType().getName()); System.out.println(" MOD: " + new Date(fileobj.getContent().getLastModifiedTime())); System.out.println(" SIZE: " + fileobj.getContent().getSize()); } catch (Exception e) { e.printStackTrace(); } |
Upload a file to Dropbox, get file type, last modified, and size (see ExampleDropbox.java)
Rename a Dropbox File
1 2 3 4 5 6 7 8 9 10 11 |
String tempfilerenamed = tempfolder + "/README"; try { FileObject fileobj = fsmanager.resolveFile(tempfile, options); FileObject fileobjrenamed = fsmanager.resolveFile(tempfilerenamed, options); fileobj.moveTo(fileobjrenamed); success = fileobjrenamed.exists(); if (success) tempfile = tempfilerenamed; } catch (Exception e) { e.printStackTrace(); } |
Rename a Dropbox file (see ExampleDropbox.java)
Download a File From Dropbox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
try { FileObject fileobj = fsmanager.resolveFile(tempfile, options); ByteArrayOutputStream bostream = new ByteArrayOutputStream(); InputStream istream = fileobj.getContent().getInputStream(); int len; byte[] buffer = new byte[1024]; while ((len = istream.read(buffer)) != -1) { bostream.write(buffer, 0, len); } istream.close(); bostream.flush(); bostream.close(); String loaded = new String(bostream.toByteArray(), encoding); success = loaded.equals(content); } catch (Exception e) { e.printStackTrace(); } |
Download a file from Dropbox (see ExampleDropbox.java)
Remove a Dropbox File And Folder
1 2 3 4 5 6 7 8 9 10 11 12 |
try { // Remove file FileObject fileobj = fsmanager.resolveFile(tempfile, options); success = fileobj.delete(); // Remove folder fileobj = fsmanager.resolveFile(tempfolder, options); success = fileobj.delete(); } catch (Exception e) { e.printStackTrace(); } |
Remove a Dropbox file and folder (see ExampleDropbox.java)
How to continue