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