1 /***
2 * Ambient - A music player for the Android platform
3 Copyright (C) 2007 Martin Vysny
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 package sk.baka.ambient.collection;
20
21 import java.io.File;
22 import java.io.FileInputStream;
23 import java.io.IOException;
24 import java.io.InputStream;
25
26 import sk.baka.ambient.library.LibraryUtils;
27
28 /***
29 * Denotes a file on the filesystem.
30 *
31 * @author Martin Vysny
32 */
33 public final class FileAudio extends AbstractAudio {
34 private final File file;
35
36 /***
37 * Creates new object instance.
38 *
39 * @param uri
40 * the file location.
41 */
42 FileAudio(final String uri) {
43 super(uri);
44 file = new File(uri);
45 }
46
47 @Override
48 public boolean exists() {
49 return file.exists();
50 }
51
52 @Override
53 public String getMimeType() {
54 return LibraryUtils.getMime(file.getName());
55 }
56
57 @Override
58 public boolean isReadable() {
59 return LibraryUtils.TRACK_FILTER.accept(file);
60 }
61
62 @Override
63 public InputStream openInputStream() throws IOException {
64 return new FileInputStream(file);
65 }
66
67 @Override
68 public long getSize() {
69 return file.length();
70 }
71 }