/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
L=E6s og skrivning af fil
Fra : NB


Dato : 09-06-04 15:26

Hejsa. Er der nogen som kan hjælpe mig med at læse en fil (tekst) og
skrive en fil (binær). Jeg har angivet med [1] samt kommentarer hvor jeg
ønsker at læse fil og med [2] samt kommentarer hvor jeg ønsker skrevet
fil.


/* Indhold af unzip.file:
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<elements>
<element>111</element>
<element>222</element>
<element>333</element>
<element>444</element>
<element>555</element>
</elements>
</root>
*/
import java.util.zip.Deflater;
import java.util.zip.Inflater;
import java.io.*;

public class ZLib {
ByteArrayOutputStream byteArrayOutputStream = new
ByteArrayOutputStream();

// Pak.
public void deflate() {
try {
// [1] HER KUNNE JEG GODT TÆNKE MIG, AT LÆSE FILEN UNZIP.FILE, SOM
// ER ET XML-DOKUMENT (SE FILENS STRUKTUR I ØVERSTE KOMMENTAR).
// HAR FORSØGT MIG MED NEDENSTÅNDE, MEN AF EN ELLER ANDEN MÆRKELIG
// ÅRSAG LÆSES KUN FØRSTE LINJE.
FileReader fileReader = new FileReader("unzip.file");
BufferedReader bufferedReader = new BufferedReader(fileReader);

String fileString = "";
StringBuffer stringBuffer = new StringBuffer();

while ((fileString = bufferedReader.readLine()) != null) {
stringBuffer.append(fileString);
}

/* // BLEV ANVENDT TIL TEST.
fileString =
"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" +
"<root>\n" +
" <elements>\n" +
" <element>111</element>\n" +
" <element>222</element>\n" +
" <element>333</element>\n" +
" <element>444</element>\n" +
" <element>555</element>\n" +
" </elements>\n" +
"</root>";
*/
byte[] buffer = new byte[5];

Deflater deflater = new Deflater();
// BLEV ANVENDT TIL TEST.
// deflater.setInput(fileString.getBytes());
deflater.setInput(stringBuffer.toString().getBytes());
deflater.finish();

int deflated = 0;
while (!deflater.finished()) {
System.out.println("!deflater.finished");
deflated = deflater.deflate(buffer);
byteArrayOutputStream.write(buffer, 0, deflated);
}

System.out.println("deflater.In: " + deflater.getTotalIn());
System.out.println("deflater.Out: " + deflater.getTotalOut());
System.out.println(byteArrayOutputStream.toString());

deflater.end();

// [2] HER KUNNE JEG GODT TÆNKE MIG AT SKRIVE DET KOMPRIMEREDE
// DATA TIL FIL, MEN JEG HAR IKKE HELT STYR PÅ HVORDAN MAN SKRIVER
// EN BINÆR FIL. HAR FORSØGT MIG MED NOGET, MEN TROR AT DET VAR
// GALT, DA JEG SÅ IKKE KUNNE INDLÆSE FILEN I INFLATE.
}
catch (Exception e) {
e.printStackTrace();
}
}

// Udpak.
public void inflate() {
try {
byte[] buffer = new byte[5];

Inflater inflater = new Inflater();
inflater.setInput(byteArrayOutputStream.toByteArray());

byteArrayOutputStream.reset();

int inflated = 0;
while (!inflater.finished()) {
System.out.println("!inflater.finished");
inflated = inflater.inflate(buffer);
byteArrayOutputStream.write(buffer);
}

System.out.println("inflater.In: " + inflater.getTotalIn());
System.out.println("inflater.Out: " + inflater.getTotalOut());

inflater.end();

System.out.println(byteArrayOutputStream.toString());
}
catch (Exception e) {
e.printStackTrace();
}
}
}



 
 
Mads Bahrt (09-06-2004)
Kommentar
Fra : Mads Bahrt


Dato : 09-06-04 16:43

NB wrote:
> while ((fileString = bufferedReader.readLine()) != null) {
> stringBuffer.append(fileString);
> }

Fra hoften og uden test, prøv med:

while(bufferedReader.ready()){
   stringBuffer.append(bufferedReader.readLine());
}

MVH
Mads

Peter Kjellerup Rasm~ (09-06-2004)
Kommentar
Fra : Peter Kjellerup Rasm~


Dato : 09-06-04 21:02

NB wrote:
> Hejsa. Er der nogen som kan hjælpe mig med at læse en fil (tekst) og
> skrive en fil (binær). Jeg har angivet med [1] samt kommentarer hvor
> jeg ønsker at læse fil og med [2] samt kommentarer hvor jeg ønsker
> skrevet fil.

1) Dette virker fint. Dobbelt check om din fil rent faktisk er tom...

2) Prøv med noget i denne retning:
try {
String fileString = "";
String s = new String();
FileReader fileReader = new FileReader("unzip.file");
BufferedReader bufferedReader = new BufferedReader(fileReader);
while ((fileString = bufferedReader.readLine()) != null) {
s += fileString;
}
System.err.println("string: " + s);

DeflaterOutputStream out = new DeflaterOutputStream(new
BufferedOutputStream(new FileOutputStream("file.gz")));
out.write(s.getBytes(), 0, s.getBytes().length);
out.finish();
out.close();

InflaterInputStream in = new InflaterInputStream(new
BufferedInputStream(new FileInputStream("file.gz")));
int b;
ByteBuffer buf = ByteBuffer.allocate(1000);
String unpack = new String();
while ((b = in.available()) != 0) {
unpack += (char)in.read();
}
System.err.println("read data : " + unpack);

} catch (Exception e) {
e.printStackTrace();
}


-Peter

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste