RandomAccessFile durch bytearrayinputstream ersetzen

skywalker77

Mitglied
Hallo !

Ich - als Java-Anfänger - habe eine klasse die eine Datei mittels RandomAccessFile lädt und schreibt.

In dieser Klasse sind seek() read() write() tell() usw vorhanden.
Die Aufgabe besteht nun darin, anstatt eine Datei zu nehmen diese Datei aus dem Speicher zu laden und dort dann auch wieder zurück zu legen.

Also bin ich auf ByteArrayInputStream gekommen.

Da hierbei manche Aufrufe fehlen, habe ich behelfsweise alles soweit hin gebogen - bis auf write.

Ich komme einfach nicht drauf wie ich da vorgehen soll.

Leider bin ich mir nicht mal sicher ob das etwas ist was von Java kommt oder ob das etwas ist was aus der Library verlangt wird die ich nutzen will.

Anbei eine original Datei mittels RandomAccessFile welche ich umbauen muss.
Freue mich über konstruktives zur Write-Methode.

Danke !


Java:
package com.radaee.util;

import android.util.Log;

import com.radaee.pdf.Document;
import com.radaee.pdf.Document.PDFStream;
import java.io.RandomAccessFile;

/**
 * File stream, an implement class for PDFStream, which used in Document.OpenStream
 * @author radaee
 */
public class PDFFileStream implements PDFStream
{
	private RandomAccessFile m_impl;
	public boolean open( String path )
	{
		try
		{
			m_impl = new RandomAccessFile( path, "rw" );
			return true;
		}
		catch( Exception e )
		{
			return false;
		}
	}
	public void close()
	{
		try
		{
			m_impl.close();
		}
		catch( Exception e )
		{
		}
		m_impl = null;
	}
	public boolean writeable()
	{
		return true;
	}
	public int get_size()
	{
		try
		{
			int len = (int)m_impl.length();
			if( len < 0 ) return 0;
			else return len;
		}
		catch( Exception e )
		{
			Log.d("get_size", e.getMessage());
			return 0;
		}
	}

	public int read(byte[] data)
	{
		try
		{
			int len = m_impl.read(data);
			if( len < 0 )
				return 0;
			else
				return len;
		}
		catch( Exception e )
		{
			Log.d("read", e.getMessage());
			return 0;
		}
	}

	public int write(byte[] data)
	{
		
		
		try
		{
			
			String str = null;
			str = new String(data, "UTF-8");
			Log.d("DEBUGGER", "Write Data to "+ tell() + "/data: ["+str+"]");
			
			m_impl.write(data);
			return data.length;
		}
		catch( Exception e )
		{
			Log.d("DEBUGLOG", "E write: "+e.getMessage());
			return 0;
		}
		
		
	}

	public void seek(int pos)
	{
		try
		{
			m_impl.seek(pos);
		}
		catch( Exception e )
		{
			Log.d("seek", e.getMessage());
		}
	}

	public int tell()
	{
		try
		{
			int pos = (int)m_impl.getFilePointer();
			if( pos < 0 ) return 0;
			else return pos;
		}
		catch( Exception e )
		{
			Log.d("tell", e.getMessage());
			return 0;
		}
	}
}
 

skywalker77

Mitglied
Hallo & vielen Dank schon mal !


Leider rauscht das ganze mit wehenden Fahnen ab.

Hier der angepasste Code erst mal:

Java:
public class cacheStream implements PDFStream
{
	private byte[] m_buffer;
	private int positionActive = 0;
	
	
	private ByteBuffer d_impl;
	
	
	private byte[] addData; //NN
	
	TimerTask mTimerTask; //NN
	Timer t = new Timer(); //NN
	
	private String filePath = null;
	
	
	public boolean open( String path )
	{
		Log.d("DEBUGLOG", "Open");
		try
		{			
			filePath = path;
			addData = null;
			
			 m_buffer = null;
		        try {
		        	File f1=new File(path);
		        	InputStream is = new FileInputStream(f1);
		            int size = is.available();
		            m_buffer = new byte[size];
		            is.read(m_buffer);
		            is.close();
		            d_impl = ByteBuffer.wrap(m_buffer);
	            
		        } catch (IOException e) {
		            e.printStackTrace();
		        }		
			
			return true;
		}
		catch( Exception e )
		{
			return false;
		}
	}
	
	public void close()
	{
		try
		{

		}
		catch( Exception e )
		{
			
		}

	}
	
	public boolean writeable()
	{
		return true;
	}
	
	
	public int get_size()
	{
		try
		{
			int len = d_impl.capacity();
			if( len < 0 ) return 0;
			else return len;
		}
		catch( Exception e )
		{
			Log.d("ADDget_size", e.getMessage());
			return 0;
		}
	}

	public int read(byte[] data)
	{
		
		try
		{
			d_impl.get(data);
			int len = data.length;
			if( len < 0 )
			{
				return 0;
			}
			else
			{
				return len;
			}

		}
		catch( Exception e )
		{
			return 0;
		}
		
	}

	public int write(byte[] data)
	{		
		d_impl.put(data);
		return data.length;
	}

	public void seek(int pos)
	{
		try
		{
			d_impl.position(pos);
		}
		catch( Exception e )
		{
			Log.d("ADDseek", e.getMessage());
		}
	}

	public int tell()
	{
		try
		{
			int pos = d_impl.position(); //positionActive;
			if( pos < 0 ) return 0;
			else return pos;
		}
		catch( Exception e )
		{
			Log.d("ADDtell", e.getMessage());
			return 0;
		}
	}
}

Vielleicht sieht jemand den Fehler. Ich sehe hier leider nicht all zu viel.

Die Fehlermeldung sagt leider nicht viel aus außer:
Java:
	09-29 03:33:42.977: I/dalvikvm-heap(12717): Grow heap (frag case) to 14.181MB for 3765097-byte allocation
	09-29 03:33:42.987: D/dalvikvm(12717): GC_FOR_ALLOC freed 1K, 19% free 13050K/15940K, paused 6ms, total 6ms
	09-29 03:33:43.047: A/libc(12717): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 12717 (droid.testapp)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A RandomAccessFile.read(byte[] b) Allgemeine Java-Themen 9
A RandomAccessFile - "insert" implementieren? Allgemeine Java-Themen 4
Iron Monkey RandomAccessFile - Bestimmte Filesize begrenzen Allgemeine Java-Themen 4
H RandomAccessFile - Zeile finden Allgemeine Java-Themen 5
C RandomAccessFile aus Jar Allgemeine Java-Themen 7
T Mit Applet per RandomAccessFile Datei öffnen Allgemeine Java-Themen 3
reibi RandomAccessFile Puffer schreiben Allgemeine Java-Themen 2
J RandomAccessFile readLine(); Allgemeine Java-Themen 5
R RandomAccessFile springt zum Ende Allgemeine Java-Themen 11
P Nochmal RandomAccessFile Allgemeine Java-Themen 6
N RandomAccessFile überschreibt Inhalt Allgemeine Java-Themen 3
A RandomAccessFile - Bytes vom Anfang der Datei löschen Allgemeine Java-Themen 32
B Probleme mit RandomAccessFile Allgemeine Java-Themen 3
R Knacken bei RandomAccessFile Allgemeine Java-Themen 5
K RandomAccessFile und readUTF/writeUTF Allgemeine Java-Themen 4
T RandomAccessFile im .jar Allgemeine Java-Themen 2
M RandomAccessFile Allgemeine Java-Themen 10
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
H Dienst durch ssh forwarding absichern? Allgemeine Java-Themen 15
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
Y Wie bekomme ich durch getImage an das Image heran? Allgemeine Java-Themen 1
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
W Java Telegram Bot - Eingabe durch User Allgemeine Java-Themen 2
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
I Buchstabe durch seinen Nachfolger ersetzen Allgemeine Java-Themen 29
M Jdeps-Error durch multi-release Allgemeine Java-Themen 6
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
C OpenCl Setup und durch JavaCode ansteuern Allgemeine Java-Themen 17
J Erste Schritte Datenspeicherung durch Java Allgemeine Java-Themen 6
M Hässliche Schrift auf Graphics durch deriveFont Allgemeine Java-Themen 0
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Aruetiise Interface Position durch JButton ermitteln Allgemeine Java-Themen 5
K Jar/DLL Abhängigkeiten durch User angeben lassen Allgemeine Java-Themen 6
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
T AWT AWT-EventQueue-0 Null_Pointer_Exception durch Variable Allgemeine Java-Themen 12
RalleYTN Problem bei Schleife die durch einen 2D raum iterieren soll Allgemeine Java-Themen 1
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Quadrieren einer Zahl nur durch Addition Allgemeine Java-Themen 5
L Vererbung If-Else ersetzen durch was? Allgemeine Java-Themen 20
K OOP OOP Gui Spiel + Vererbungen Probleme durch Nichtwissen!! Allgemeine Java-Themen 1
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
B Counting Sort (Sortieren durch Zählen) Allgemeine Java-Themen 13
Z Durch Bäume iterieren Allgemeine Java-Themen 3
M Unterbrechnung durch Echtzeitbefehle? Allgemeine Java-Themen 4
G Suchweg durch Binärbaum speichern Allgemeine Java-Themen 4
L Label- & Textfelderzeugung durch Button Allgemeine Java-Themen 1
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
H Optimierung durch Threads Allgemeine Java-Themen 31
S JTable: Model durch ein anderes ersetzen Allgemeine Java-Themen 2
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
F Live Ticker durch Screenshots Allgemeine Java-Themen 22
C Hex Zeichen ersetzen durch leer Zeichen Allgemeine Java-Themen 5
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
N Algorithmus durch Workflow Allgemeine Java-Themen 7
R Windows-Firewall lässt Java nicht durch Allgemeine Java-Themen 17
E Oracle kann durch 0 teilen !?! Allgemeine Java-Themen 7
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
J Java Datei durch Java Datei öffnen Allgemeine Java-Themen 16
M Arraynamen durch Variable festlegen lassen Allgemeine Java-Themen 5
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
F Slash durch Systembezogenen Fileseparator ersetzen Allgemeine Java-Themen 18
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
D Updaten von Klassen durch jar.exe zerstört diese. Update durch WinRAR gelingt! Allgemeine Java-Themen 2
A SWT Ausgabetext Shellscript durch Java Allgemeine Java-Themen 8
Ark Array durch Interface ersetzen Allgemeine Java-Themen 7
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
fastjack Hardwareinformationen durch Java auslesen Allgemeine Java-Themen 7
S durch Code steppen Allgemeine Java-Themen 7
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
M eigene Klasse durch Composition mit java.io.File erweitern Allgemeine Java-Themen 3
C Markierung durch Maus lesen Allgemeine Java-Themen 9
T Synchronisation von Listen bei Zugriffen durch mehrere Prozesse Allgemeine Java-Themen 15
N Scanner läuft nicht durch Allgemeine Java-Themen 2
F kamera auslösen durch Programm Allgemeine Java-Themen 17
M Maus durch JavaProgramm bewegen Allgemeine Java-Themen 2
Dissi Itext - Anordnung von Elementen durch PDF Writer Allgemeine Java-Themen 2
N Casten durch generic vermeiden ?? Allgemeine Java-Themen 10
H Performancegewinn durch Mehrfachobjeknutzung Allgemeine Java-Themen 3
N Fehler abfang läuft doppelt durch Allgemeine Java-Themen 2
H Performance Vorteil durch Wechsel der JVM? Allgemeine Java-Themen 6
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
S Testen einer Anwendung durch klicken von Koordinaten Allgemeine Java-Themen 7
N int[] eindeutig durch eine Zahl repräsentieren Allgemeine Java-Themen 12
GilbertGrape Durch JDK debuggen Allgemeine Java-Themen 2
Q Objekte durch Reflection erzeugen Allgemeine Java-Themen 18
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
G Schleife durch Button beenden Allgemeine Java-Themen 6
royale Breitendurchlauf / Dijkstra durch Graph, vereinfacht Allgemeine Java-Themen 3
Hawkes Beschädigte Tarballs durch JavaTar Allgemeine Java-Themen 2
X Status Anzeige-durch Thread? Allgemeine Java-Themen 15
4 ich steige einfach nicht durch Allgemeine Java-Themen 5
P Thread Demonstrationr eist durch die Zeit Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben