Class FileContentReader

  • All Implemented Interfaces:
    org.alfresco.service.cmr.repository.ContentAccessor, org.alfresco.service.cmr.repository.ContentReader, org.alfresco.service.cmr.repository.FileContentReader

    @AlfrescoPublicApi
    public class FileContentReader
    extends AbstractContentReader
    implements org.alfresco.service.cmr.repository.FileContentReader
    Provides direct access to a local file.

    This class does not provide remote access to the file.

    Author:
    Derek Hulley
    • Field Detail

      • MSG_MISSING_CONTENT

        public static final java.lang.String MSG_MISSING_CONTENT
        message key for missing content. Parameters are
        • NodeRef
        • ContentReader
        See Also:
        Constant Field Values
    • Constructor Detail

      • FileContentReader

        public FileContentReader​(java.io.File file)
        Constructor that builds a URL based on the absolute path of the file.
        Parameters:
        file - the file for reading. This will most likely be directly related to the content URL.
      • FileContentReader

        public FileContentReader​(java.io.File file,
                                 java.lang.String url)
        Constructor that explicitely sets the URL that the reader represents.
        Parameters:
        file - the file for reading. This will most likely be directly related to the content URL.
        url - the relative url that the reader represents
    • Method Detail

      • getSafeContentReader

        public static org.alfresco.service.cmr.repository.ContentReader getSafeContentReader​(org.alfresco.service.cmr.repository.ContentReader existingReader,
                                                                                             java.lang.String msgTemplate,
                                                                                             java.lang.Object... args)
        Checks the existing reader provided and replaces it with a reader onto some fake content if required. If the existing reader is invalid, an debug message will be logged under this classname category.

        It is a convenience method that clients can use to cheaply get a reader that is valid, regardless of whether the initial reader is valid.

        Parameters:
        existingReader - a potentially invalid reader or null
        msgTemplate - the template message that will used to format the final fake content
        args - arguments to put into the fake content
        Returns:
        Returns a the existing reader or a new reader onto some generated text content
      • getFile

        public java.io.File getFile()
        Specified by:
        getFile in interface org.alfresco.service.cmr.repository.FileContentReader
        Returns:
        Returns the file that this reader accesses
      • exists

        public boolean exists()
        Specified by:
        exists in interface org.alfresco.service.cmr.repository.ContentReader
        Specified by:
        exists in interface org.alfresco.service.cmr.repository.FileContentReader
        Returns:
        Whether the file exists or not
      • getSize

        public long getSize()
        Specified by:
        getSize in interface org.alfresco.service.cmr.repository.ContentAccessor
        See Also:
        File.length()
      • getLastModified

        public long getLastModified()
        Specified by:
        getLastModified in interface org.alfresco.service.cmr.repository.ContentReader
        See Also:
        File.lastModified()
      • createReader

        protected org.alfresco.service.cmr.repository.ContentReader createReader()
                                                                          throws org.alfresco.service.cmr.repository.ContentIOException
        The URL of the write is known from the start and this method contract states that no consideration needs to be taken w.r.t. the stream state.
        Specified by:
        createReader in class AbstractContentReader
        Returns:
        Returns a reader onto the location referenced by this instance. The instance must always be a new instance.
        Throws:
        org.alfresco.service.cmr.repository.ContentIOException
      • getDirectReadableChannel

        protected java.nio.channels.ReadableByteChannel getDirectReadableChannel()
                                                                          throws org.alfresco.service.cmr.repository.ContentIOException
        Description copied from class: AbstractContentReader
        Provides low-level access to read content from the repository.

        This is the only of the content reading methods that needs to be implemented by derived classes. All other content access methods make use of this in their underlying implementations.

        Specified by:
        getDirectReadableChannel in class AbstractContentReader
        Returns:
        Returns a channel from which content can be read
        Throws:
        org.alfresco.service.cmr.repository.ContentIOException - if the channel could not be opened or the underlying content has disappeared
      • canWrite

        @Deprecated
        public boolean canWrite()
        Deprecated.
        Since 5.1. This method has no value: a file reader can never write (DH: 2015/02/17)
        Returns:
        Returns false as this is a reader