To create a folder in the repository use the createNode method of the NodesApi , which is one of the main APIs used when you want to manipulate folders and files.
For more information about this ReST API endpoint, see Create a Folder.
For a description of the common parameters, such as include, see Common Parameters.
import org.alfresco.core.handler.NodesApi; import org.alfresco.core.model.Node; import org.alfresco.core.model.NodeBodyCreate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.*; @Component public class CreateFolder { static final Logger LOGGER = LoggerFactory.getLogger(CreateFolder.class); @Autowired NodesApi nodesApi; public void execute() throws IOException { Node folderInCompanyHome = createFolder("Folder1", "Title1", "Desc1", ""); Node folderInFolder1 = createFolder("Folder2", "Title2", "Desc2", "/Folder1"); } /** * Make the remote call to create a folder in the repository, if it does not exist. * * @param folderName the name of the folder * @param folderTitle the title of the folder * @param folderDescription the description of the folder * @param relativeFolderPath path relative to /Company Home * @return a node object for the newly created node, contains the ID, * such as e859588c-ae81-4c5e-a3b6-4c6109b6c905 */ private Node createFolder(String folderName, String folderTitle, String folderDescription, String relativeFolderPath) throws IOException { Objects.requireNonNull(folderName); String rootPath = "-root-"; // /Company Home String folderType = "cm:folder"; // Standard out-of-the-box folder type List<String> folderAspects = new ArrayList<String>(); folderAspects.add("cm:titled"); Map<String, String> folderProps = new HashMap<>(); folderProps.put("cm:title", folderTitle); folderProps.put("cm:description", folderDescription); String nodeId = rootPath; // The id of a node. You can also use one of these well-known aliases: -my-, -shared-, -root- NodeBodyCreate nodeBodyCreate = new NodeBodyCreate(); nodeBodyCreate.setName(folderName); nodeBodyCreate.setNodeType(folderType); nodeBodyCreate.setAspectNames(folderAspects); nodeBodyCreate.setProperties(folderProps); nodeBodyCreate.setRelativePath(relativeFolderPath); List<String> include = null; List<String> fields = null; Boolean autoRename = true; Boolean majorVersion = true; // Should versioning be enabled at all? Boolean versioningEnabled = true; Node folderNode = nodesApi.createNode(nodeId, nodeBodyCreate, autoRename, majorVersion, versioningEnabled, include, fields).getBody().getEntry(); LOGGER.info("Created new folder: {}", folderNode); return folderNode; } }
See also Working with Relationships between Folders or Files for more examples of node creation.