ばかげた質問かもしれませんが、それは私を怒らせています。
readAudioDataFromFile
メインから呼び出されたときに引数を受け取っていない関数 ( ) があります。コンパイル エラーや例外などはスローされず、間違った値が返されるだけです。
ここにいくつかの単純化されたコードがあります:
Main
クラス
package audioCheck;
import java.io.FileNotFoundException;
public class AudioCheck
{
public static void main(String[] args) throws FileNotFoundException
{
String filePath1 = "C:/file1.wav";
String filePath2 = "C:/file2.wav";
new readAudioDataFromFile(filePath1, filePath2);
}
}
ReadAudioDataFromFile
クラス
package audioCheck;
import java.io.*;
public class readAudioDataFromFile {
public readAudioDataFromFile(String filePath1, String filePath2) throws FileNotFoundException {
// This is the part I hardcode for getting the correct results, instead of passing them as args.
// String filePath2 = "C:/file2.wav";
// String filePath1 = "C:/file1.wav";
FileInputStream ins2 = null;
FileInputStream ins1 = null;
File file2 = new File(filePath2);
File file1 = new File(filePath2);
int size2 = (int) file2.length();
int size1 = (int) file1.length();
byte [] buffer2=new byte [size2];
byte [] buffer1=new byte [size1];
try {
ins2= new FileInputStream(filePath2);
ins1= new FileInputStream(filePath1);
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
//contar e imprimir buffer 2
ins2.read(buffer2, 0,size2);
int count2 =0;
for(int i=0; i<buffer2.length; i++)
{
if(buffer2[i]!=0)
count2++;
}
String data2 = String.valueOf((count2));
System.out.println(data2);
//contar e imprimir buffer1
ins1.read(buffer1, 0,size1);
int count1 =0;
for(int i=0; i<buffer1.length; i++)
{
if(buffer1[i]!=0)
count1++;
}
String data1 = String.valueOf((count1));
System.out.println(data1);
}
catch (IOException e) {
e.printStackTrace();
}
}
}
問題は、ファイルパスをハードコードするとreadAudioDataFromFile
、完全に機能することです。それぞれの場合の出力は次のとおりです。
から引数を渡すようにしてmain
ください:
348
388
ハードコーディングreadAudioDataFromFile
:
1205739
1346847
アドバイスありがとう