Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arquivos e Diretórios |
Como ler o conteúdo de um arquivo texto e armazená-lo em uma variável string usando Java - Desafio de Programação Resolvido em JavaQuantidade de visualizações: 743 vezes |
Pergunta/Tarefa: Escreva um programa Java que solicita ao usuário o caminho e nome de um arquivo texto. Em seguida seu código deverá abrir o arquivo, ler todo o seu conteúdo (pode ser uma linha de cada vez) e guardá-lo em uma variável do tipo string. Para finalizar, exiba o conteúdo desta variável. Sua saída deverá ser parecida com: Informe o caminho e nome do arquivo: C:\estudos_java\conteudo.txt Esta é a primeira linha de texto Esta é a segunda linha de texto Veja a resolução comentada deste exercício usando Java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ // para ler as linhas individuais String linha = ""; // para guardar o texto todo String resultado = ""; // vamos pedir para o usuário informar o nome e caminho do arquivo Scanner entrada = new Scanner(System.in); System.out.print("Informe o caminho e nome do arquivo: "); String nomeArquivo = entrada.nextLine(); try { BufferedReader arquivo = new BufferedReader(new FileReader(nomeArquivo)); while((linha = arquivo.readLine()) != null){ // vamos registar mais essa linha de texto resultado += linha + System.getProperty("line.separator"); } // agora mostramos todo o conteúdo lido System.out.println(resultado); // e fechamos o arquivo arquivo.close(); } catch (FileNotFoundException e) { System.err.println("\nArquivo não encontrado\n"); } catch(IOException e) { System.err.println("\nNão foi possível abrir o arquivo\n"); } } } |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Manipulação de imagens em Java - Como converter uma imagem JPG colorida para uma imagem na escala cinza (gray scale)Quantidade de visualizações: 11994 vezes |
Uma das formas mais comuns de se converter uma imagem colorida para uma imagem na escala cinza (grayscale) é desenhar a imagem colorida em um BufferedImage do tipo TYPE_BYTE_GRAY. Veja o resultado na imagem abaixo: E agora o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.awt.*; import java.io.*; import java.awt.image.*; import java.awt.event.*; import javax.swing.*; import javax.imageio.*; public class Estudos extends JFrame{ private BufferedImage imagem; private BufferedImage imagemCinza; AreaImagem areaImagem; public Estudos(){ super("Estudos Java"); Container c = getContentPane(); c.setLayout(new BorderLayout()); JButton btn = new JButton("Carregar Imagem"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ JFileChooser fc = new JFileChooser(); int res = fc.showOpenDialog(null); if(res == JFileChooser.APPROVE_OPTION){ File arquivo = fc.getSelectedFile(); imagem = null; try{ imagem = ImageIO.read(arquivo); } catch(IOException exc){ JOptionPane.showMessageDialog(null, "Erro ao carregar a imagem: " + exc.getMessage()); } if(imagem != null){ areaImagem.imagem = imagem; areaImagem.repaint(); } } } } ); JButton btn2 = new JButton("Converter Escala Cinza"); btn2.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ converterEscalaCinza(); } } ); JPanel painel = new JPanel(); painel.setLayout(new FlowLayout()); painel.add(btn); painel.add(btn2); c.add(painel, BorderLayout.SOUTH); // Cria a área de exibição da imagem areaImagem = new AreaImagem(); c.add(areaImagem, BorderLayout.CENTER); setSize(400, 300); setVisible(true); } public void converterEscalaCinza(){ imagemCinza = new BufferedImage( imagem.getWidth(), imagem.getHeight(), BufferedImage.TYPE_BYTE_GRAY); Graphics g = imagemCinza.getGraphics(); g.drawImage(imagem, 0, 0, null); g.dispose(); areaImagem.imagem = imagemCinza; areaImagem.repaint(); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } // Sub-classe de JPanel para exibir a imagem class AreaImagem extends JPanel{ public BufferedImage imagem; public void paintComponent(Graphics g){ super.paintComponent(g); // desenha a imagem no JPanel g.drawImage(imagem, 0, 0, this); } } |
Java ::: Pacote java.lang ::: StringBuffer |
Curso completo de Java - Como usar a classe StringBuffer da linguagem JavaQuantidade de visualizações: 9035 vezes |
A classe StringBuffer, no pacote java.lang, representa uma sequencia de caracteres mutável e segura em relação a threads. Um objeto StringBuffer é parecido com uma String, com a diferença que um StringBuffer pode ser modificado in-place, ou seja, modificações em seu conteúdo não geram uma nova cópia, como acontece com objetos da classe String. Veja a posição desta classe na hierarquia de classes Java: java.lang.Object java.lang.StringBuffer A qualquer momento um StringBuffer contém uma sequencia de caracteres em particular, mas o tamanho e o conteúdo da sequencia pode ser alterado por meio de certas chamadas de métodos. Objetos StringBuffer são seguros para acesso em um ambiente de múltiplas threads. Os métodos são sincronizados (synchronized) onde necessário de forma a garantir que todas as operações em uma instância em particular se comportem como se estivessem em ordem serial, ou seja, sejam consistentes com a ordem das chamadas de métodos feitas por cada uma das threads envolvidas. As operações principais de um StringBuffer são os métodos append() e insert(), que são sobrecarregados para aceitar dados de qualquer tipo. Cada um destes métodos converte a informação fornecida em string e então acrescenta ou insere os caracteres desta string no string buffer. O método append() sempre adiciona os caracteres no final do buffer. O método insert(), por sua vez, adiciona os caracteres em um determinado ponto. Por exemplo, se z se refere a um objeto string buffer cujo conteúdo é "start", então a chamada de método z.append("le") faria com que o string buffer tivesse agora ""startle"", enquanto z.insert(4, "le") alteraria o conteúdo do string buffer para "starlet". Em geral, se sb se refere a uma instância de StringBuffer, então sb.append(x) tem o mesmo efeito que sb.insert(sb.length(), x). Sempre que uma operação ocorre envolvendo uma sequencia de fonte (por exemplo, adicionar ou inserir a partir de uma outra sequencia), esta classe sincroniza somente o string buffer no qual a operação está sendo feita. Todo string buffer possui uma capacidade (capacity). Enquanto o comprimento da sequencia de caracteres contida no string buffer não exceder a capacidade do mesmo, não há necessidade de alocar uma nova matriz interna de buffer. Se o buffer interno for sobrecarregado, ele será automaticamente expandido. A partir do Java 5, esta classe foi suplementada com uma classe equivalente criada para o uso em ambiente de thread única: StringBuilder. A classe StringBuilder deve ser usada em vez de StringBuffer, uma vez que ela suporta as mesmas operações mas é mais rápida por não executar sincronização. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Vetores e Matrizes - Exercícios Resolvidos de Java - Ex. 12 - Declarar e construir um vetor, pedir ao usuário para informar os valores dos elementos e mostrar o maior e o menor valor armazenado no vetorQuantidade de visualizações: 9921 vezes |
Pergunta/Tarefa: Escreva um programa Java GUI ou console que declara e constrói um vetor de 10 inteiros. Em seguida peça ao usuário para informar os valores para os elementos do vetor e, uma vez preenchida, percorra o vetor e mostre os valores armazenados. Para finalizar varra o vetor novamente e mostre os valores do maior e do menor elemento. A declaração e construção do vetor pode ser feita da seguinte forma: // declara e constrói um vetor de 10 inteiros int valores[] = new int[10]; Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // declara e constrói um vetor de 10 inteiros int valores[] = new int[10]; // vamos pedir ao usuário para informar os 10 valores for(int i = 0; i < valores.length; i++){ System.out.print("Informe o " + (i + 1) + "º valor: "); valores[i] = Integer.parseInt(entrada.nextLine()); } // vamos exibir os valores informados System.out.println("\nOs valores informados foram: "); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } // agora vamos encontrar o maior e o menor valor no vetor // vamos assumir que o primeiro elemento // possui o maior e o menor valor int maior = valores[0], menor = valores[0]; for(int i = 0; i < valores.length; i++){ // encontra o maior valor if(valores[i] > maior){ maior = valores[i]; } // encontra o menor valor if(valores[i] < menor){ menor = valores[i]; } } System.out.println("\n\nO maior valor é: " + maior); System.out.println("O menor valor é: " + menor); } } Uma idéia na resolução deste exercício é assumir que o primeiro elemento do vetor possui tanto o maior quanto o menor valor. |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Delphi - Delphi para matemática - Como arredondar valores de ponto-flutuante para cima usando a função Ceil() Delphi - Como retornar o caractere a partir de um determinado código ASCII em Delphi usando a função Chr() |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |