2010-11-01 26 views
2

J'ai une application Windows C++ qui crée un fichier mappé en mémoire pour un bitmap mis à jour fréquemment. Je voudrais accéder à ce fichier mappé en mémoire pour afficher l'image en direct dans une application Java. Comment puis je faire ça?comment accéder aux fichiers mappés en mémoire C++ dans java

Je sais que FileChannel peut être mappé en mémoire mais je ne vois pas comment accéder à un fichier mappé en mémoire créé par un autre processus.

J'utilise déjà JNA dans mon application java, devrais-je l'utiliser pour accéder à la fonctionnalité standard de fichiers mappés en mémoire Windows?

Ou avez-vous une autre solution que le fichier mappé en mémoire pour afficher un flux d'images en direct dans Java à partir d'une image créée par un programme séparé?

Répondre

1

J'ai finalement utilisé jna et la bibliothèque de la plate-forme qu'ils fournissent. Le package Kernel32 permet d'accéder aux fonctions CreateFileMapping et MapViewOfFile.

2

Il existe un exemple de code here qui fait ce que vous voulez en utilisant JNI pour passer de C++ (fichiers mappés en mémoire Win32) à Java. Peut fonctionner comme il est, bien qu'un peu de nettoyage pour la sécurité et le threading pourrait être nécessaire selon votre scénario.

0

Un fichier mappé en mémoire est toujours un fichier. Vous pouvez le lire avec java.io, ou vous pouvez utiliser un MappedByteBuffer de java.nio si vous le voulez également en Java.