Olá, estou desenvolvendo um programa, onde eu gostaria de fazer que os dados fossem salvos no computador que está instalado (evitando a utilização de banco de dados). Exemplo abaixo:
Exemplo
O usuário iria registrar por exemplo os produtos de uma loja, onde teria o ID, Código, Nome e Valor, ao ser registrado iria ser criado um arquivo com o nome Produtos.txt automaticamente e ao registrar outros produtos, ele iria apenas atualizar esse arquivo com os novos dados. A estrutura do arquivo ficaria mais ou menos assim:
Produtos.txt
ID =
Código =
Nome =
Valor =
E quando registrado um produto ficaria assim:
Produtos.txt
ID = 1
Código = 12345678
Nome = Bolacha
Valor = 30.00
E caso fosse registrado mais de um produto, ele criaria novas linhas com os dados e apenas atualizaria o arquivo, como por exemplo:
Produtos.txt
ID = 1
Código = 12345678
Nome = Bolacha
Valor = 30.00
ID = 2
Código = 13572468
Nome = Biscoito
Valor = 20.00
Alguém sabe se seria possível fazer isso e como posso fazer?
Estou utilizando o Eclipse na linguagem Java.
ATUALIZANDO
Achei esse código, ele gera o arquivo caso não exista e atualiza o arquivo ao inserir novas informações, porém se tiver algum texto, ele irá substituir e não adicionar, segue o código:
Código
package telas;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class GravarProdutos extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private static BufferedReader reader;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
// Conteúdo
String content =
"\nID = 1\n"
+ "Código = 12345678\n"
+ "Nome = Bolacha\n"
+ "Valor = 30.00\n";
// Cria arquivo
File file = new File("Produtos.txt");
// Se o arquivo não existir, ele gera
if (!file.exists()) {
file.createNewFile();
}
// Prepara para escrever no arquivo
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
// Escreve e fecha o arquivo
bw.write(content);
bw.close();
// Lê o arquivo
FileReader ler = new FileReader("Produtos.txt");
reader = new BufferedReader(ler);
String linha;
while( (linha = reader.readLine()) != null ){
System.out.println(linha);
}
// Imprime confirmacao
System.out.println("\nGravado!");
} catch (IOException e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GravarProdutos frame = new GravarProdutos();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GravarProdutos() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}
}
Ola @VinyciusCS, cara pq tu não usa a lib do commons-io usando o maven, vai facilitar tua vida, segue um exemplo:
Aqui a lib no maven:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
Aqui o código de exemplo
try {
List<String> linhas = new LinkedList<>();
linhas.add("ID=1");
linhas.add("Nome=Lais");
//passo o caminho do arquivo, as linhas que serao adicionadas no arquivo, e passo true para sempre adicionar no final
FileUtils.writeLines(new File("C:\\SEU_PATH\\Produtos.txt"), linhas , true);
List<String> linhas2 = new LinkedList<>();
linhas2.add("ID=2");
linhas2.add("Nome=Jacob");
FileUtils.writeLines(new File("C:\\SEU_PATH\\Produtos.txt"), linhas2, true);
} catch (IOException ex) {
Logger.getLogger(SaveContentFile.class.getName()).log(Level.SEVERE, null, ex);
}
Vê se serve pra vc
Infelizmente não consigo utilizar o Maven (bug do Eclipse), e o código dá erro nas linhas:
FileUtils.writeLines(new File("C:\\SEU_PATH\\Produtos.txt"), linhas , true);
Em “writeLines”, e tive que substituir o “FileUtils” por “FileUtilities” para que reconhecesse, e os textos ele seria adicionado pelo usuário, por exemplo, através de um JTextField, apenas coloquei daquela forma acima porque foi o único que achei e funcionou o mais próximo, mesmo assim obrigado!