23 package com.realtime.crossfire.jxclient.sound;
27 import java.io.BufferedInputStream;
28 import java.io.IOException;
29 import java.io.InputStream;
30 import java.nio.file.Files;
31 import java.nio.file.NoSuchFileException;
32 import java.nio.file.Path;
33 import java.nio.file.Paths;
34 import org.jetbrains.annotations.NotNull;
35 import org.jetbrains.annotations.Nullable;
67 public InputStream
getInputStream(@NotNull
final CharSequence name)
throws IOException {
68 final StringBuilder sb =
new StringBuilder(
"resource/sounds/");
69 for (
int i = 0; i < 64 && i < name.length(); i++) {
70 final char ch = name.charAt(i);
71 if ((
'0' <= ch && ch <=
'9') || (
'a' <= ch && ch <=
'z')) {
78 final String resource = sb.toString();
80 final Path localFile = Paths.get(resource).toAbsolutePath().normalize();
82 final InputStream inputStream = Files.newInputStream(localFile);
86 return new BufferedInputStream(inputStream);
87 }
catch (
final NoSuchFileException ignored) {
95 final InputStream inputStream = Files.newInputStream(file);
99 return new BufferedInputStream(inputStream);
100 }
catch (
final NoSuchFileException ignored) {
106 final InputStream inputStream =
AudioFileLoader.class.getClassLoader().getResourceAsStream(resource);
107 if (inputStream !=
null) {
111 return new BufferedInputStream(inputStream);
117 throw new IOException(
"resource "+resource+
" does not exist");