Java, write to a specific line of a .txt file

0

I've been testing various ways to write data to a variable in a text file (.txt), but I need to know if I can write this variable on a particular line, so I could organize multiple data in the same file by manipulating only the desired line.

package geraclube;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.nio.file.Files;
import static java.nio.file.Files.lines;
import static java.nio.file.Files.lines;
import static java.nio.file.Files.lines;
import java.nio.file.Paths;

public class Start {

public static void main(String[] args) throws IOException {

    MoneyGenerator gerM = new MoneyGenerator(); // instancia o gerador de dinheiro

    String saveLoadFile = "dados_java.txt";

    // puxa os dados do arquivo "dados_java.txt", vai puxar os arquivos da Linha 1
    // observem que os itens estão descritos com dois pontos duplos para facilitar...
    //...a identificação dos campos e o split a baixo.
    String moneyLine = Files.readAllLines(Paths.get(saveLoadFile)).get(1);
    String[] parts = moneyLine.split("::");

    //após o split vai separar somente o número real para o código
    int saldoFinal = Integer.parseInt(parts[1]);

    // se o saldo for zero o código vai gerar...
    //...um novo valor através da classe MoneyGenerator.java
    if (saldoFinal == 0) {
        saldoFinal = (gerM.clubMoney);


    }
    System.out.println(saldoFinal);

}

If it falls into "if" I would like to write the result of the variable in the second line of a .txt file without changing the other lines. It's possible? Or would I have to use another method?

    
asked by anonymous 05.08.2018 / 07:30

1 answer

2

I am not sure if it is possible to update only one line already written inside a txt file, what you can do alternatively is to update the complete contents of the file, follow the example:

public static void main(String[] args) throws IOException {

MoneyGenerator gerM = new MoneyGenerator(); // instancia o gerador de dinheiro

String saveLoadFile = "dados_java.txt";

File file = new File(saveLoadFile);

//Salvando todas as linhas do arquivo na memória
List<String> moneyLines= Files.readAllLines(Paths.get(saveLoadFile));
//pegando informação da linha 2
String linha2 = moneyLines.get(1);

//Split da linha
String[] parts = linha2.split("::");

//após o split vai separar somente o número real para o código
int saldoFinal = Integer.parseInt(parts[1]);
//deletando o conteúdo do arquivo
deletarConteudoTxt(file);

// se o saldo for zero o código vai gerar...
//...um novo valor através da classe MoneyGenerator.java
if (saldoFinal == 0) {
    saldoFinal = (gerM.clubMoney);
    //alterando o valor da segunda linha
    String conteudo =parts[0]+"::"+parts[1];
    moneyLines.set(1,conteudo);

}
//Escrevendo o novo conteúdo no arquivo txt.
PrintWriter writer = new PrintWriter(file);
for(int i=0; i<moneyLines.size(); i++){
    writer.println(moneyLines.get(i));

}
writer.close();

public static void deletarConteudoTxt(File file) throws FileNotFoundException{
    PrintWriter writer = new PrintWriter(file);
    writer.close();
}
    
07.08.2018 / 02:45