Datei öffnen - gibt's irgendeine Größen-Beschränkung?

Status
Nicht offen für weitere Antworten.

muemmel_0811

Bekanntes Mitglied
Hallo Ihr,

bevor ich's jetzt ausprobiere und am Ende an eigener Unfähigkeit scheiter...frag ich lieber mal schnell:

Kann ich, wenn ich's richtig mache (wie das genau funktioniert ist erstmal egal), eine 6 GB (ja, ich meine Gigabyte) große Logdatei mit Java Boardmitteln überhaupt noch öffnen und dann bspw. zeilenweise weiterverarbeiten oder hupt dann der HeapSpace?

Grüße,
muemmel_0811
 
ich vermute, dass es dabei keine Probleme gibt, da Streams so schlau sind, immer nur einen Teil der Daten zu laden,

andererseits vermutest du selber auch sicher einiges und wolltest gar keine weitere Vermutung hören?
Pech gehabt 😉
 
sollte gehen

hab mal damit eine Datei kopiert (1GB)
in = /dev/zero
Code:
	public static void copyV2(File in, File out) throws IOException {
		FileChannel inChannel = new FileInputStream(in).getChannel();
		FileChannel outChannel = new FileOutputStream(out).getChannel();
		// 512 kb
		ByteBuffer buffer = ByteBuffer.allocateDirect(1024 * 512);

		long size = 1024 * 1024 * 1024;
		long n = 0;
		while (n < size) {
			buffer.clear();
			if (inChannel.read(buffer) < 0) {
				break;
			}
			buffer.flip();
			n += outChannel.write(buffer);
		}
	}
 
Der Müde Joe hat gesagt.:
sollte gehen

hab mal damit eine Datei kopiert (1GB)
in = /dev/zero
Code:
	public static void copyV2(File in, File out) throws IOException {
		FileChannel inChannel = new FileInputStream(in).getChannel();
		FileChannel outChannel = new FileOutputStream(out).getChannel();
		// 512 kb
		ByteBuffer buffer = ByteBuffer.allocateDirect(1024 * 512);

		long size = 1024 * 1024 * 1024;
		long n = 0;
		while (n < size) {
			buffer.clear();
			if (inChannel.read(buffer) < 0) {
				break;
			}
			buffer.flip();
			n += outChannel.write(buffer);
		}
	}

Mal schauen was das New NIO in JDK7 (NIO.2) bringt!

Beispiel:

Code:
import java.nio.file.*;
import static java.nio.file.StandardCopyOption;

Path source = Path.get("c:\\MyDocuments\\Stuff.dat");
Path target = Path.get("d:\\Backup\\MyStuff.dat");

source.copyTo(target);
// oder
source.copyTo(target, REPLACE_EXISTING, COPY_ATTRIBUTES);

Sieht schon mal einfacher aus als ein bisheriges (selbstgebautes) Copy mittels File Objekten. 😉

bye Saxony
 
Guten morgen zusammen,

vielen Dank für Eure schnellen Antworten 🙂
Dann werd ich mich demnächst mal an die Arbeit machen und hier garantiert wieder aufschlagen, wenn's Probleme gibt. :wink:

Grüße,
muemmel_0811
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben