2017-05-23 1 views
0

Je programme un jeu pour un projet et il se déroule sans problème, mais j'ai un léger problème, il utilise un fichier texte pour enregistrer les réalisations qui ont été débloquées après le programme se ferme, et je ne sais pas comment l'éditer. Bien que je puisse réécrire le tout en utilisant certaines vérifications pour voir ce qui a été déverrouillé et mettre Y dans la réécriture en utilisant les instructions if else, puis le remplacer, cela prendrait un grand nombre de lignes de code et pas aussi fiable que sur le l'écriture spot de la réalisation, et probablement être, bien que pas si mal, plus de ressources, que de remplacer le texte à la ligne souhaitée, dans le fichier texte. Donc, étant donné cette structure (le numéro est attaché à la réussite, la lettre ci-dessous indique à mon programme si elle est déverrouillée ou non, N signifie non Y signifie oui) si j'ai débloqué la réalisation 2 par exemple, comment rechercher un fichier texte ressemble à ceci ...Ajout d'un texte à un fichier existant à un emplacement spécifique

01 
N 
02 
N 
03 
N 
04 
N 
05 
N 
06 
N 
07 
N 
08 
N 
09 
N 
10 
N 
11 
N 
12 
N 

pour 02 puis modifiez la ligne ci-dessous de N à Y, en utilisant le code java 1.8. (Le fichier est appelé Achievements.txt, et j'ai une variable appelée LongPath qui est le répertoire dynamique où le jeu est stocké, donc à des fins de code exemple le répertoire fonctionnera comme

(longPath+"\\Achievements.txt") 

ex.

Scanner scan = new Scanner(new File(longPath+"\\Achievements.txt")); 

est le début du code que j'utilise pour déterminer dans le code qui réalisations sont déverrouillés (le code du scanner fonctionne très bien BTW)

modifier: la réécriture du fichier est pas très faisable, et je vais au lit maintenant, donc je vais répondre demain matin à ~ 8: 10 Ester n Temps

+0

qu'avez-vous essayé jusqu'à présent? –

+0

rien parce que tout ce que j'ai trouvé est pour ajouter du texte à la fin d'un fichier et pour moi, par exemple, supprimer tout jusqu'à 02 et réécrire est presque aussi mauvais que complètement réécrire le fichier et le remplacer chaque fois qu'une réussite est débloquée @Scary Wombat –

+0

Pourquoi gardez-vous des réalisations non déverrouillées? Vous pouvez simplement stocker seulement un déverrouillé et si vous ne trouvez pas la réalisation dans le fichier n'est pas déverrouillé. –

Répondre

1

Si vous remplacez simplement N avec Y à savoir ne pas écrire des informations supplémentaires alors RandomAccesFile devrait travailler pour vous

voir ce link pour un exemple de writeChars

0

Essayez de regarder cet article: https://www.mkyong.com/java/how-to-append-content-to-file-in-java/

Selon elle, lorsque vous instancier une nouvelle classe de FileWriter, il y a un constructeur où vous pouvez définir un booléen « true » pour qu'il à ajouter à un fichier plutôt que de l'écraser.

Par exemple:

File file = new File(longPath+"\\Achievements.txt"); 
FileWriter fw = new FileWriter(file, true); 
fw.write("This string should append to the end of the file"); 

Je suis incapable de le tester au moment.

+0

Merci pour votre temps, mais c'est exactement ce que j'ai trouvé. J'ai besoin de pouvoir écrire au milieu du fichier: | Si vous savez comment faire cela, c'est ce dont j'ai besoin. @UNE. Cucci –