指定されたヘッダーを使用して読み取りおよび書き込み関数を書き込む Java バイナリ I/O を実行しようとしています。読み取り機能は動作するようになりましたが、書き込み機能の仕様は次のとおりです。
ここDataOutputStream
で、Java 標準ライブラリのクラスを使用して、write メソッドを完成させ、指定された の値をファイルに書き込みArrayList<Object>
ます。リストにはオブジェクトのみを含める必要がInteger
ありDouble
ます。他のタイプのオブジェクトに遭遇した場合は、IllegalArgumentException
(Java 標準ライブラリの例外) をスローする必要があります。さらに、整形式のグループ、つまり、いくつのオブジェクトが続くかを指定する 1 つのオブジェクトのみが存在する必要Integer
がDouble
ありInteger
ますDouble
。不足している値や余分なDouble
値がある場合は、IllegalArgumentException
. 十分にテストされた読み取りメソッドを使用して、期待どおりの結果が得られるかどうかを確認することで、書き込みメソッドをテストできます。構築することにより、IllegalArgumentExceptions をスローするためのロジックをテストできます。ArrayList<Object>
予期しないタイプまたは不適切な形式の int-double グループを含むリスト。
ここにコードがあります....
import java.io.*;
import java.util.ArrayList;
public class BinaryReader
{
private String filename;
private ArrayList<Object> list;
public static ArrayList<Object> read(String fileName)
{
FileInputStream in = null;
ArrayList<Object> list = new ArrayList<Object>();
try
{
in = new FileInputStream(fileName);
}
catch(FileNotFoundException e)
{
System.out.println("File not found");
}
DataInputStream data = new DataInputStream(in);
boolean read = true;
int number = 0;
double dbl = 0;
while(read)
{
try
{
number = data.readInt();
}
catch(EOFException e)
{
System.out.println("Caught end of file exception");
break;
}
catch(IOException e)
{
System.out.println("Caught");
}
list.add(number);
for(int i = 0; i < number; i++)
{
try
{
dbl = data.readDouble();
}
catch(EOFException e)
{
System.out.println("Caught");
}
catch(IOException e)
{
System.out.println("Caught");
}
list.add(dbl);
}
}
return list;
}
public static void write(String fileName, ArrayList<Object> list)
{
FileOutputStream out = null;
try
{
out = new FileOutputStream(fileName);
}
catch(FileNotFoundException e)
{
System.out.println("file not found");
}
DataOutputStream data = new DataOutputStream(out);
//int count = 0;
try
{//PROBLEM AREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
for(int i = 0; i < list.size(); i++)
{
data.writeInt((Integer)list.get(i));
for(int j = 0; j < list.size(); j++)
{
data.writeDouble((Double)list.get(i));
}
}
}
catch(IOException e)
{
System.out.println("Caught");
}
}
}