So Lesen Sie eine bin-Datei in ein byte-array?
Ich habe eine bin-Datei, die ich brauche, um zu konvertieren, um ein byte-array. Kann mir jemand sagen, wie dies zu tun?
Hier ist was ich habe, so weit:
File f = new File("notification.bin");
is = new FileInputStream(f);
long length = f.length();
/*if (length > Integer.MAX_VALUE) {
//File is too large
}*/
//Create the byte array to hold the data
byte[] bytes = new byte[(int)length];
//Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
//Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+f.getName());
}
Aber es funktioniert nicht...
Kaddy
Ich fest, dass für Sie. Bitte versuchen Sie es, um tatsächlich Fragen zu Formaten, die Sie veröffentlichen, so dass Sie sind intelligent und gut lesbar sein.
In welcher Weise ist es nicht? Was ist die File-Klasse, die Sie verwenden? Warum nicht die standard std::ifstream?
Wahrscheinlich, weil es ist C# und nicht C++
Das ist nicht C# - ich glaube, es ist Java.
Es sieht eine verdammt viel mehr, wie Java als C#, sowieso. Ich habe bearbeitet die tags entsprechend.
In welcher Weise ist es nicht? Was ist die File-Klasse, die Sie verwenden? Warum nicht die standard std::ifstream?
Wahrscheinlich, weil es ist C# und nicht C++
Das ist nicht C# - ich glaube, es ist Java.
Es sieht eine verdammt viel mehr, wie Java als C#, sowieso. Ich habe bearbeitet die tags entsprechend.
InformationsquelleAutor Kaddy | 2009-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen Sie es mit dieser
Btw, willst du ein Java-code oder C++ - code. Sehen Sie den code in deiner Frage, bin ich davon ausgegangen, dass es ein java-code und damit gab einer java-Antwort
DataOutputStream
?+1 Das ist ein schöner Fang von Tom, ByteArrayOutputStream, würde genügen, in diesem Fall, wo wir nur bytes Lesen und bytes schreiben. Wenn wir schreiben primitiver Typen neben DataOutputStream gebraucht werden könnte
InformationsquelleAutor Prabhu R
Sind Sie wahrscheinlich besser dran mit einem memory mapped file. Sehen diese Frage
InformationsquelleAutor Jherico
In Java, eine einfache Lösung ist:
Wenn der input eine Datei ist, können wir preallocate ein byte-array der richtigen Größe:
Jedoch, es ist wahrscheinlich ein effizienter Weg, um diese Aufgabe mit NIO.
InformationsquelleAutor Stephen C
Es sei denn, Sie wirklich brauchen, um machen es einfach so, vielleicht vereinfachen, was Sie tun.
Tun alles in der for-Schleife kann scheinen wie eine sehr glatte Art und Weise, es zu tun, aber es ist Schießen selbst in den Fuß, wenn Sie Debuggen müssen und nicht immer sofort die Lösung.
InformationsquelleAutor Dean J
In diesem Antwort ich Lesen aus einer URL
Könnte man ändern, damit der InputStream aus einer Datei statt von einer URLConnection.
Etwas wie:
etc
InformationsquelleAutor OscarRyz
Versuchen open-source-Bibliothek apache-commons-io
IOUtils.toByteArray(inputStream)
Sie sind nicht der erste und nicht der Letzte Entwickler, der braucht zum Lesen einer Datei, keine Notwendigkeit, neu zu erfinden jeder Zeit.
InformationsquelleAutor Pavel Feldman