# Dateisystem unter Java simulieren



## Spontex (21. Jan 2005)

Hallo zusammen,


das Topic sag eigentlich schon alles aus - ist es unter Java möglich, in irgendeiner form ein Dateisystem zu simulieren welches das Betriebssystem versteht?

Also ich will das der Benutzer dann ganz normal über seinen Explorer darauf zugreifen kann und wenn er z.B. eine Datei kopiert bekomme ich ein Event das er was kopieren will und wohin. So das ich das ganze dann "von Hand" zum Ziel kopiere aber natürlich auch die Möglichkeit habe vorher oder nachher noch das eine oder andere zu erledigen.


Freundliche Grüsse
Spontex


----------



## Sky (21. Jan 2005)

Du kannst Dir natürlich eine Art Datei-Explorer schreiben.

Such mal ein bißchen was zu dem Thema hier im Forum oder im Internet und fang in der API mal an, Dir was zum Thema "File" anzuschauen.


----------



## Spontex (21. Jan 2005)

sky80 hat gesagt.:
			
		

> Du kannst Dir natürlich eine Art Datei-Explorer schreiben.
> 
> Such mal ein bißchen was zu dem Thema hier im Forum oder im Internet und fang in der API mal an, Dir was zum Thema "File" anzuschauen.



Das ist klar und auch nicht so das Problem, nur wenn ich jetzt eine Datei mit einem beliebigem Programm öffnen möchte, dann sollte das ganze auch funktionieren. Also muss irgendwas her womit ich ein Laufwerk bzw. ein Dateisystem simuliere!
Bzw. wenn das überhaupt geht was ich da vor habe - ohne native wirds wohl nicht auskommen befürchte ich.


----------



## KSG9|sebastian (21. Jan 2005)

Damit ich das richtig verstehe:

Du willst ne Programm haben dem du Dateien übergibst, von dem du Dateien auslesen und speichern kannst? 

Aber wozu dann ein Dateisystem simulieren?


----------



## Spontex (21. Jan 2005)

KSG9|plak hat gesagt.:
			
		

> Damit ich das richtig verstehe:
> 
> Du willst ne Programm haben dem du Dateien übergibst, von dem du Dateien auslesen und speichern kannst?



Jaein  

Ich will mir ein Programm schreiben was vollautomatisch kompremiert und verschlüsselt , die Dateien sind dann für das Betriebssystem nicht sichtbar, stecken in einer Datenbank oder in einer grossen Datei oder sowas in der Art.

Ich will Dateisystem simulieren um auf die Dateien zugreifen zu können. Also ich möchte eine z.B. eine Word Datei öffnen, ganz normal über das Dateisystem - diese Anfrage kommt dann bei meinem Programm an welches die Datei dekompremiert und entschlüsselt und sie dann zurückschickt so das sie dann in Word geöffnet werden kann.

Ich hoffe das ich etwas verständlicher machen konnte was ich da vorhabe!


----------



## The_S (21. Jan 2005)

Spontex hat gesagt.:
			
		

> Ich will mir ein Programm schreiben was vollautomatisch kompremiert und verschlüsselt , die Dateien sind dann für das Betriebssystem nicht sichtbar



Wie willst das verwirklichen? Hört sich ja hoch kompliziert an!


----------



## Sky (21. Jan 2005)

Also ich glaube sowas ist erstmal nicht möglich (belehrt mich bitte eines besseren, wenn ich mich irre...)

Du brauchst für deinen Anwendungsfall ja ein Programm, dass alle OS-Events mitbekommt, bewertet und evtl. bearbeitet. Also, da Java in einer VM läuft, scheidet das m.E. aus.


----------



## niemand (21. Jan 2005)

Sowas im Stil der Progs, mit denen man unter Win Images mounten kann, bzw. das Standard-mount unter Linux, nur mit integriertem Image? Ich befürchte, dafür ist Java dann doch der falsche Ausgangspunkt.

cu


----------



## AlArenal (21. Jan 2005)

Nein, so wie du dir das denkst geht das vermutlich nicht. Hört sich an wie bei Global Safe Disk... 

Du könntest höchstens ein Programm schreiben, in dem du dann die Dateien visuell (Icon, sonstwie) darstellst und bei Doppelklick wird diese teporär auf Platte abgelegt (vorher entpackt, entschlüsselt..) und dann von dort aus mit der im System verknüpften Anwendung geöffnet wird (müsste mit JDIC gehen).

Aber dass du die Datei im normalen Windows Explorer siehst, anklickst und die Datei dann erst aus ner Java-Anwendung generiert wird - das wird nix 

Mit entsprechend C/C++, das ganze in Java über JNI eingehängt könnteste evtl. ein zusätzliches Laufwerk simulieren. Dann würde das funzen. Aber das entwickelt man nicht "mal eben so" und ohne direkte Windows-Programmierung in C++ wird das mal gar nichts...


----------



## Spontex (21. Jan 2005)

sky80 hat gesagt.:
			
		

> Also ich glaube sowas ist erstmal nicht möglich (belehrt mich bitte eines besseren, wenn ich mich irre...)
> 
> Du brauchst für deinen Anwendungsfall ja ein Programm, dass alle OS-Events mitbekommt, bewertet und evtl. bearbeitet. Also, da Java in einer VM läuft, scheidet das m.E. aus.





			
				niemand hat gesagt.:
			
		

> Sowas im Stil der Progs, mit denen man unter Win Images mounten kann, bzw. das Standard-mount unter Linux, nur mit integriertem Image? Ich befürchte, dafür ist Java dann doch der falsche Ausgangspunkt.
> 
> cu



Das habe ich, wie gesagt, befürchtet. Und ich möchte Java dafür verwenden damit es mindestens auf Windows und Linux läuft ohne jeweils eine extra OS Version des Programms zu installieren. Naja ich werde mal schaun - warscheinlich werde ich mir eine C++ lib schreiben welche die Betriebssystem zugriffe für mich erledigt und über JNI an Java weitergibt. Aber ich lote gerade auch erst die machbarkeit aus, vielleicht werde ich es auch nie machen wenn der aufwand zu gross ist   :shock:


----------



## Spontex (21. Jan 2005)

AlArenal hat gesagt.:
			
		

> [...]
> Mit entsprechend C/C++, das ganze in Java über JNI eingehängt könnteste evtl. ein zusätzliches Laufwerk simulieren. Dann würde das funzen. Aber das entwickelt man nicht "mal eben so" und ohne direkte Windows-Programmierung in C++ wird das mal gar nichts...



Da hatten wir den selben Gedanken, das mit der C++ Entwicklung sollte gehen, da ich schon länger in C++ schreibe als Java! Nur ein Laufwerk habe ich da bisher auch nicht simuliert - wir werden sehen!


----------



## AlArenal (21. Jan 2005)

Nur, warum solltest du dann noch was in Java schreiben? Der hauptaufwand wird die Anbindung ans OS sein. Da kannste gleich alles in C++ machen


----------



## kopfsalat (21. Jan 2005)

Sowas gibt's doch sogar schon. Man erhält ein weiteres virtuelles Laufwerk, das von jedem Programm genau wie ein anderes Laufwerk zu erreichen ist, und sich genauso verhält, wie ein anderes Laufwerk, allerdings sind die Daten darauf verschlüsselt gespeichert, oder liegen anderswo im Netz verteilt, etc., und für Zugriffe wird man nach einem Passwort gefragt. Hab ich vor Jahren mal gesehen. 

Das wird aber nix mit Java, bzw. lohnt es sich nicht, dafür Java zu benutzen, da das dermaßen plattformabhängig ist, da kannst Du gleich native bleiben und dir für Windows mal die WinAPI zu Gemüte führen - für Linux weiß ich nicht, geht vielleicht dort auch eleganter, da man sowieso frei nach Schnauze mounten kann.


----------



## Spontex (21. Jan 2005)

AlArenal hat gesagt.:
			
		

> Nur, warum solltest du dann noch was in Java schreiben? Der hauptaufwand wird die Anbindung ans OS sein. Da kannste gleich alles in C++ machen





			
				Spontex hat gesagt.:
			
		

> Und ich möchte Java dafür verwenden damit es mindestens auf Windows und Linux läuft ohne jeweils eine extra OS Version des Programms zu installieren.





			
				kopfsalat hat gesagt.:
			
		

> Sowas gibt's doch sogar schon. Man erhält ein weiteres virtuelles Laufwerk, das von jedem Programm genau wie ein anderes Laufwerk zu erreichen ist, und sich genauso verhält, wie ein anderes Laufwerk, allerdings sind die Daten darauf verschlüsselt gespeichert, oder liegen anderswo im Netz verteilt, etc., und für Zugriffe wird man nach einem Passwort gefragt. Hab ich vor Jahren mal gesehen.



Aha interessant, werde mal danach suchen.


----------



## kopfsalat (21. Jan 2005)

Hier mal 2 Links zu Programmen durch Google: "laufwerk virtuell verschlüsselt"

http://www.p2pworld.to/history/topic/89600-1.html

http://www.wintotal.de/softw/index.php?rb=1027&id=663


----------



## welterde (21. Jan 2005)

Unter Linux könntest du Devices nehmen die man moutet.
für win cygwin.com damit könntest du es mit viel Aufwand hinkriegen.
etwa so
Daten<-dein Javaprogramm<-nativer wraper der per loopback netzwerk auf das java-programm zugreift<-losetup<-mount<-win programm
Ich hoffe das konnte dir helfen


----------



## Grizzly (21. Jan 2005)

Du könntest natürlich auch sowas wie Samba schreiben - also einen Windows Server. Dann könntest Du das Laufwerk als Netzwerklaufwerk in Windows und Linux einbinden. Allerdings wirst Du mit dem SMB Protokoll wahrscheinlich eine Weile beschäftigt sein.


----------



## welterde (22. Jan 2005)

Als Ansatz könntest du den Client nehmen:
http://jcifs.samba.org/


----------

