问题
I'm trying to write data to a file in binary format for compression. The data consists entirely of floating points so I decided to quantize the data to an intergers between 0 and 65535 so the data can be written as two bit unsigned integers and ultimately save space. However, I need to output that quantized data to a file in binary instead of human-readable Ascii.
At the moment this is what I'm doing
@param outputFile the file containing the already quantized data as strings in a .txt file
public void generateBinaryRioFile(String materialLibrary,
String outputFile, String group, String mtlAux) {
try {
// Create file
FileWriter fileStream = new FileWriter(outputFile);
try {
BufferedReader br = new BufferedReader(new FileReader(new File(
"idx.txt")));
while ((line = br.readLine()) != null) {
writer.write(line + "\n");
}
try {
br.close();
} catch (FileNotFoundException e) {
e.getMessage();
} catch (IOException e) {
e.printStackTrace();
} BufferedWriter writer = new BufferedWriter(fileStream);
However that writes to the file as a human readable string. I need it to be written as binary data. How does one go about doing this in Java?
回答1:
Maybe this fragment will help.
int i = 42;
DataOutputStream os = new DataOutputStream(new FileOutputStream("C:\\binout.dat"));
os.writeInt(i);
os.close();
回答2:
What about the DataOutputStream. You can write int which contains 2 of your data integers.
DataOutputStream dos = new DataOutputStream(new FileOutputStream(<path>));
ArrayList<Integer> list = new ArrayList<Integer>();
int sum;
for( int i = 0; i < list.size(); i++ ) {
if(i%2!=0){
sum |= list.get( i ).intValue()<<16;
dos.writeInt( sum );
} else {
sum = list.get( i ).intValue();
}
}
来源:https://stackoverflow.com/questions/6981555/how-to-output-binary-data-to-a-file-in-java