問題タブ [getresource]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - jar ファイル内のバイト配列を使用してサウンドをキャッシュする
javasoundタグ wiki ページの「Playing a Clip
」ソリューションを使用して、サウンドを読み取って再生できます。ただし、頻繁に再生されるサウンド (たとえば、レーザー ガンの素早い音、足音など) の場合、新しい. そのため、読み取りファイルをにキャッシュし、その後キャッシュからロードしようとしています。Clip
byte[]
ロード部分は簡単です:
ただし、最初にファイルの内容をバイト配列に取得することは困難であることがわかっています。問題は、.jarに含まれるファイルからサウンドを読み込もうとしていることです。そのため、(私が理解しているように) 使用java.io.File
はオプションではなく、私が見たさまざまな解決策 (以下のリンク) は適用されません。
を使用せずにバイト配列を作成するためにファイルの長さを取得するのが最も難しいと思われますjava.io.File
。でバイトを読み取ることができますが、Scanner
それらを何らかの配列に読み取る必要があります。私はちょうど使用する必要がありますArrayList<Byte>
か?(以下の「次善の例」を参照してください。)
それで、私の質問:後で繰り返しアクセスするために、埋め込みファイルを に読み込む最良の方法は何ですか?byte[]
制限事項
- jarfile 内のファイルにアクセスできる必要があります。私はこれが私を
Class.getResource
またはに制限すると信じていますClass.getResourceAsStream
。 byte[]
ファイルのバイトは、標準変数に格納する必要があります。- Guava や Apache Commons などの不要な依存関係を導入せずにこれを行うことをお勧めします。これまでのところ、私のプロジェクト全体はバニラ Java (JDK6) であり、そのままにしておきたいと思っています。
私は何を試しましたか?
私はRandomAccessFile
次のように使用してみました:
ただし、明らかにこれはディスク参照ファイルに対してのみ機能します。次のエラーが表示されます。
java.io.FileNotFoundException: \path\to\sound\in\jar\file.wav (指定されたパスが見つかりません)
次善の例
この例は機能ArrayList
しますが、一定のサイズ変更などのため、これを行うための最良の方法ではないと思います.
前の読書
java - src ディレクトリに Java リソースを書き込む
Java と Eclipse を IDE として使用して (タイル) レベルのエディターを作成しています。getResourceAsStream を使用してタイルマップをロードしています。そして、このコードはマップを書き戻します。
それは正常に動作しますが、問題は、bin/ と src/ の 2 つのディレクトリがあることです。ディレクトリ bin/ は Eclipse によって生成されます。だから私はsrcディレクトリのファイルを編集したい. 残念ながら、getResource() は bin/ ディレクトリで動作します。さらに、プロジェクトを再構築すると、マップ上のすべての変更が削除されます。だから私は src/ フォルダーのタイルマップを編集したいだけです。どうすればそれを達成できますか?
一部の絶対パスをハードコーディングすることは避けたいと思います。
java - getResources().getString() が私のクラスに定義されていません
これが私のres/values-es/strings.xml
ファイルの文字列です:
Javaコードで使用する場所は次のとおりです。
それは私にこのエラーを与えています:
WhereQuiz
は、Java コードが存在するクラスの名前です。メソッドの他のすべてのサンプルコードは、getResources()
問題なく同じ方法で使用しているようです。私の実装が機能していないのは何ですか?
編集
java - getResources().getColor がカスタム ビューで機能しない
カスタム ビューを作成しましたが、そこからカスタム定義の色にアクセスできないようです。私のアプリ全体は、次の 3 つのファイルで構成されています
res/values フォルダーにある colors.xml:
TestView.java:
および MainActivity.java:
私が得るのは、黒いはずの空白の白い画面だけです! 私はこれを約2日間続けて引き起こしている可能性があるものを理解しようとしてきましたが、言うまでもなく、うまくいかなかった多くのことを試しました. 誰かがこれで私を助けることができれば、私は非常に感謝しています.
ありがとう!