2011-08-20 3 views
1

Je trouve le moyen de lecture/écriture dans un fichier avec verrouillage. IOS sdk prend-il en charge cette fonctionnalité?fichier lecture-écriture de verrouillage en Obj-C (iPhone)

Je vois qu'il ya 2 façons de lire le fichier d'écriture.

D'abord avec NSFileManager et un autre est NSInputStream/NSOutputStream, mais je n'ai pas vu la façon de gérer la concurrence des fichiers, par exemple, ouvrir le fichier avec le verrouillage en écriture.

Ou je dois mettre en œuvre les verrouillage par moi-même?

Répondre

1

NSOutputStream outputStreamToFileAtPath:append: maintient un verrou d'écriture dans le fichier.
Vous pouvez toujours utiliser fopen et fstream (en objC++) et ils vont travailler comme dans un linux régulier.

3

En général, les applications iOS ne prennent pas la peine de verrouiller des fichiers parce que les documents sont sandbox loin d'autres applications. flock() est implémenté dans iOS, mais je ne l'ai pas personnellement utilisé. Cela peut être utile si vous avez plusieurs threads ou classes partageant les mêmes fichiers.

+0

Oui, plusieurs threads partagent les mêmes fichiers. – teerapap

+0

J'essayerais soit flock() ou même juste une structure de données interne thread-safe contenant une liste de vos fichiers verrouillés. Vous pouvez utiliser un NSMutableSet, par exemple, pour contenir une liste de chemins complets pour tous les fichiers verrouillés. Vous devez vous assurer d'utiliser @synchronized chaque fois que vous accédez à l'ensemble, mais cela ne devrait pas être trop difficile. L'accès équitable serait un peu plus difficile à mettre en œuvre - où le thread qui attend le plus longtemps accède au fichier. – EricS

Questions connexes