2010-11-01 10 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.

Questions connexes