001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License.  You may obtain a copy of the License at
009     *
010     *  http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing,
013     * software distributed under the License is distributed on an
014     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     * KIND, either express or implied.  See the License for the
016     * specific language governing permissions and limitations
017     * under the License.
018     */
019    
020    package javax.activation;
021    
022    import java.io.File;
023    import java.io.FileInputStream;
024    import java.io.FileOutputStream;
025    import java.io.IOException;
026    import java.io.InputStream;
027    import java.io.OutputStream;
028    
029    /**
030     * @version $Rev: 467553 $ $Date: 2006-10-25 06:01:51 +0200 (Mi, 25. Okt 2006) $
031     */
032    public class FileDataSource implements DataSource {
033        private final File file;
034        private FileTypeMap fileTypeMap;
035    
036        /**
037         * Creates a FileDataSource from a File object
038         */
039        public FileDataSource(File file) {
040            this.file = file;
041        }
042    
043        /**
044         * Creates a FileDataSource from the specified path name
045         */
046        public FileDataSource(String name) {
047            this(new File(name));
048        }
049    
050        /**
051         * Return the InputStream obtained from the data source
052         */
053        public InputStream getInputStream() throws IOException {
054            return new FileInputStream(file);
055        }
056    
057        /**
058         * Return the OutputStream obtained from the data source
059         */
060        public OutputStream getOutputStream() throws IOException {
061            return new FileOutputStream(file);
062        }
063    
064        /**
065         * Returns the content type of the data source
066         */
067        public String getContentType() {
068            if (fileTypeMap == null) {
069                return FileTypeMap.getDefaultFileTypeMap().getContentType(file);
070            } else {
071                return fileTypeMap.getContentType(file);
072            }
073        }
074    
075        /**
076         * Returns the name of the data source object
077         */
078        public String getName() {
079            return file.getName();
080        }
081    
082        /**
083         * Returns the data source file
084         */
085        public File getFile() {
086            return file;
087        }
088    
089        /**
090         * Sets the FileTypeMap associated with the data source
091         */
092        public void setFileTypeMap(FileTypeMap map) {
093            fileTypeMap = map;
094        }
095    }