Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: Dicas & Truques ::: Entrada e Saída em Arquivos (File Input/Output - IO)

Entendendo e aprendendo a usar a classe RandomAccessFile

Quantidade de visualizações: 12623 vezes
A classe RandomAccessFile fornece uma forma muito conveniente de ler ou modificar o conteúdo de um arquivo. O que diferencia esta classe de outras classes de leitura e escrita do Java é que a classe
RandomAccessFile permite o acesso à posições aleatórias de um arquivo. Desta forma, um cursor de arquivo ou ponteiro nos permite navegar pelo conteúdo do arquivo e atingir as posições a serem lidas ou modificadas. Veja sua posição na hierarquia de classes Java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

java.lang.Object
  java.io.RandomAccessFile

Esta classe implementa ainda as interfaces Closeable, DataInput e DataOutput.

Objetos da classe RandomAccessFile são vistos como uma grande matriz de bytes. Operações de leitura começam a ler a partir da posição zero do arquivo e avançam o ponteiro de arquivo à medida que novos bytes são lidos. Operações de escrita funcionam da mesma forma.

Veja um trecho de código no qual temos um RandomAccessFile representando um arquivo texto. Note que o RandomAccessFile é criado em modo de leitura neste exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

import java.io.*;

public class Estudos{
  public static void main(String[] args){
    // uma instância de RandomAccessFile somente leitura
    try{
      RandomAccessFile arquivo = 
        new RandomAccessFile("C:\\java\\conteudo.txt", "r");

      // array que guardará o conteúdo lido
      byte[] conteudo = new byte[10];

      System.out.println("A posição do cursor é: " + 
        arquivo.getFilePointer());

      // vamos ler 10 bytes do arquivo
      int res = arquivo.read(conteudo, 0, conteudo.length);

      // vamos exibir os bytes lidos
      for(int i = 0; i < conteudo.length; i++){
        System.out.println((char)conteudo[i]);
      }

      System.out.println("A posição do cursor é: " + 
        arquivo.getFilePointer());

      // fecha o arquivo
      arquivo.close();   
    }
    catch(FileNotFoundException fnfe){
      System.out.println(fnfe.getMessage());
    }
    catch(IOException ioe){
      System.out.println(ioe.getMessage());
    }

    System.exit(0);
  }
}

Neste exemplo nós lemos 10 bytes do arquivo. Veja como o cursor de leitura é avançado a cada byte lido.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Coleções (Collections) ::: ArrayList

Como retornar o índice da última ocorrência de um elemento em uma ArrayList do Java usando a função lastIndexOf()

Quantidade de visualizações: 9282 vezes
Em algumas situações nós gostaríamos de pesquisar um valor em um ArrayList e retornar o índice de sua última aparição, para o caso desse elemento estar contido mais de uma vez na coleção. Para isso nós podemos usar o método lastIndexOf().

Se o elemento pesquisado não estiver na ArrayList, o valor -1 será retornado.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.util.ArrayList;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> nomes = new ArrayList<String>();
    
    // adiciona itens na lista
    nomes.add("Carlos");
    nomes.add("Maria");
    nomes.add("Fernanda");
    nomes.add("Osmar");
    nomes.add("Maria");    
	
    // obtém o índice da última ocorrência do
    // nome "Maria"
    int indice = nomes.lastIndexOf("Maria");

    System.out.println("O último índice do nome pesquisado é: " 
      + indice); 

    System.exit(0);
  }
}

Ao executarmos este código Java nós teremos o seguinte resultado:

O último índice do nome pesquisado é: 4


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arquivos e Diretórios

Exercícios Resolvidos de Java - Um programa que recebe um caminho e nome de um arquivo e retorna apenas o caminho, sem o nome e extensão do arquivo

Quantidade de visualizações: 7493 vezes
Pergunta/Tarefa:

Escreva um método Java que recebe um caminho e nome de arquivo na forma:

"C:\temporario\Java\dica.txt"

e retorne apenas o caminho do arquivo, sem o nome e extensão do arquivo. Assim, para o caminho acima, o retorno deve ser apenas:

"C:\temporario\Java"

Eis a assinatura do método a ser criado:

public static String getCaminho(String caminho);
Dica: Escreva este método de forma que o mesmo funcione tanto no Windows como no Linux, ou seja, use File.separatorChar para obter o separador de diretórios na máquina na qual o código está sendo executado.

Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.io.File;

public class Main {
  public static void main(String[] args) {
    // define um caminho e nome de arquivo
    String caminho = "C:\\temporario\\Java\\dica.txt";

    // vamos retornar apenas o caminho do arquivo, ou seja, retirar o
    // nome do arquivo
    String caminhoFinal = getCaminho(caminho);

    // vamos mostrar o resultado
    System.out.println("O caminho do arquivo é: " + caminhoFinal);
  }

  public static String getCaminho(String caminho){
    // vamos obter o índice da última ocorrência do separador de caminho
    int pos = caminho.lastIndexOf(File.separatorChar);
    if (pos > -1) {
       return caminho.substring(0, pos);
    }

    // por padrão vamos retornar uma string vazia
    return "";
  }
}

Uma variação deste exercício é a criação de um método que recebe o caminho e nome do arquivo e retorne apenas o nome do arquivo, seguido por sua extensão.


Java ::: Dicas & Truques ::: Arquivos e Diretórios

Como adicionar conteúdo a um arquivo texto existente em Java usando BufferedWriter e FileWriter

Quantidade de visualizações: 41 vezes
Nesta dica mostrarei como podemos usar as classes BufferedWriter e FileWriter da linguagem Java para adicionar mais conteúdo a um arquivo texto já existente. Veja que só precisamos fornecer o valor true para o segundo parâmetro do construtor da classe FileWriter.

Eis o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.io.*;

public class Estudos {

  public static void main(String[] args) {
    try {
      BufferedWriter out = new BufferedWriter(
        new FileWriter("C:\\estudos_java\\conteudo.txt", true));
      out.write("Esta é a primeira linha de texto\r\n");
      out.write("Esta é a segunda linha de texto");
      out.close();
    } 
    catch (IOException e) {
      System.out.println("Err: " + e.getMessage());
    }

    System.out.println("Acabei de adicionar conteúdo ao arquivo");

    System.exit(0);
  }
}

Execute este código Java algumas vezes e veja como o novo conteúdo é adicionado ao conteúdo já existente no arquivo texto.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico

Exercícios Resolvidos de Java - Como testar se um número é positivo ou negativo em Java

Quantidade de visualizações: 13146 vezes
Pergunta/Tarefa:

Escreva um programa Java que pede para o usuário informar um número inteiro. Em seguida seu código deverá informar se o número informado é positivo, negativo ou neutro. O zero não é um número positivo nem negativo, já que não é maior nem menor que si mesmo. Por essa razão dizemos que ele é um número neutro.

Sua saída deve ser parecida com:

Informe um número inteiro: 3
O número 3 é positivo.
Informe um número inteiro: -5
O número -5 é negativo.
Informe um número inteiro: 0
O número 0 é neutro.
Resposta/Solução:

Veja a solução comentada deste exercício usando a linguagem Java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler o número
    System.out.print("Informe um número inteiro: ");
    int numero = Integer.parseInt(entrada.nextLine());
    
    // o número é positivo?
    if(numero > 0){
      System.out.println("O número " + numero + " é positivo.");
    }
    // o número é negativo?
    else if(numero < 0){
      System.out.println("O número " + numero + " é negativo.");
    }
    else{ // o número é neutro
      System.out.println("O número " + numero + " é neutro.");
    }
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Java - Escreva um programa Java que usa uma função recursiva para retornar a quantidade de dígitos presentes em um número inteiro informado pelo usuário

Quantidade de visualizações: 1027 vezes
Pergunta/Tarefa:

Escreva um programa Java usa uma função recursiva para retornar a quantidade de dígitos presentes em um número inteiro informado pelo usuário. Você pode usar qualquer técnica de recursividade disponível, desde que o retorno da função seja um valor inteiro.

Você deverá implementar a seguinte função recursiva:

public static int quantDigitos(int numero){
  // seu código aqui
}
Sua saída deverá ser parecida com:

Informe um número inteiro de qualquer tamanho: 4983
O número informado possui 4 dígitos
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package exercicio;

import java.util.Scanner;

public class Exercicio{
  public static void main(String[] args) {
    // cria um novo objeto da classe Scanner
    Scanner entrada = new Scanner(System.in);
    	
    // vamos pedir para o usuário informar um número inteiro
    System.out.print("Informe um número inteiro de qualquer tamanho: ");
    int num = Integer.parseInt(entrada.nextLine());
    
    // vamos obter a quantidade de dígitos no número usando
    // uma chamada à função recursiva quant_digitos()
    int quant = quantDigitos(num);
     
    // mostramos o resultado
    System.out.println("O número informado possui " + quant +
      " dígitos");
  }
  
  // função recursiva que recebe um número inteiro e retorna
  // sua quantidade de dígitos
  public static int quantDigitos(int numero){
    if ((numero / 10) == 0){ // atenção: divisão inteira
      // retorna o caso base
      return 1;
    }
    else{
      // efetua mais uma chamada recursiva
      return 1 + quantDigitos(numero / 10);
    }
  }   
}



Java ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar a instrução switch do Java

Quantidade de visualizações: 64727 vezes
Quando precisamos escolher entre múltiplos caminhos alternativos e esta escolha pode ser baseada em um valor inteiro, a instrução switch é uma boa opção. Veja seu uso:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

public class Estudos{
  public static void main(String[] args){
    int valor = 4;

    switch(valor){
      case 1:
        System.out.println("Valor é 1"); 
        break;
      case 2:
        System.out.println("Valor é 2"); 
        break;
      case 3:
        System.out.println("Valor é 3"); 
        break;
      default:
        System.out.println("Valor diferente de 1, 2 e 3"); 
        break;
    }   
  }
}

A variável fornecida à instrução switch deve ser do tipo byte, short, char, ou int. Ela não pode ser long, float, double, boolean ou referência a objetos. Veja o que acontece quando tentamos usar uma variável do tipo long:

Estudos.java:5: possible loss of precision
found   : long
required: int
    switch(valor){
           ^
1 error



Java ::: Pacote java.lang ::: String

Curso de Java - Como usar a classe String da linguagem Java

Quantidade de visualizações: 7350 vezes
A classe String, presente no pacote java.lang, permite a representação de cadeias (strings) de caracteres. Todos os strings literais em Java, tais como "abc", são implementados como instâncias desta classe.

Por pertencer ao pacote java.lang, não precisamos importar nenhum pacote para poder usar esta classe em nossos programas Java. Veja um exemplo de como declarar e inicializar uma variável do tipo String:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

public class Main {
  public static void main(String[] args) {
    String nome = "Osmar J. Silva";
    System.out.println(nome);
  }
}

Veja a posição desta classe na hierarquia de classes da plataforma Java:

java.lang.Object
java.lang.String

Esta classe implementa as interfaces Serializable, CharSequence e Comparable<String>.

Objetos do tipo String são constantes, ou seja, seus valores não podem ser alterados depois de criados. Assim, se você tiver um código parecido com:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

public class Main {
  public static void main(String[] args) {
    // ambas as variáveis apontam para uma mesma string
    // há somente uma cópia de "Osmar J. Silva" na memória
    String nome = "Osmar J. Silva";
    String nome2 = "Osmar J. Silva";
	
    // agora uma nova string é criada e a anterior é preservada
    nome2 = "Marcos de Souza Gomes";
  }
}

Note que o compilador, com o propósito de poupar recursos do sistema, cria apenas uma string "Osmar J. Silva" e a coloca no pool de strings. No momento que alteramos o valor da variável nome2, uma nova string "Marcos de Souza Gomes" é criada e a anterior permanece intacta.

A classe String inclui métodos para examinar os caracteres individuais da sequencia, para a comparação de strings, pesquisar, extrair substrings e também criar uma cópia da string com todos os caracteres convertidos para letras maiúsculas ou minúsculas. O mapeamente das letras maiúsculas e minúsculas é feito com base na versão Unicode Standard especificada na classe Character.

A linguagem Java fornece suporte especial para a concatenação de strings, usando o operador (+) e para a conversão de outros objetos em strings. A concatenação é implementada por meio da classe StringBuilder (ou StringBuffer) e seu método append(). As conversões de strings são implementadas por meio do método toString(), definido na classe Object e herdado por todas as demais classes Java.

Quando não devidamente observado, passar um argumento null para o construtor ou método da classe String fará com que uma exceção do tipo NullPointerException seja atirado.

A classe String representa uma string no formato UTF-16, no qual caracteres suplementares são representados por pares prepostos. Valores de índice referem-se às unidades de código de caracteres. Assim, caracteres suplementares usam duas posições em uma String.


Java ::: Dicas & Truques ::: Strings e Caracteres

Exemplos Java Strings - Como remover um caractere de uma string usando o método deleteCharAt() da classe StringBuffer do Java

Quantidade de visualizações: 114 vezes
Neste exemplo mostrarei como podemos usar o método deleteCharAt() da classe StringBuffer para remover um determinado caractere de uma palavra, frase ou texto. Observe que a string original é modificada após uma chamada a este método.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    StringBuffer frase = new StringBuffer("Java");
    System.out.println("Original: " + frase); 
    
    frase.deleteCharAt(1); // exclui a primeira letra "a"
     
    System.out.println("Depois da remoção: " + frase);
     
    System.exit(0);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Original: Java
Depois da remoção: Jva


Vamos testar seus conhecimentos em Hidrologia

(CEBRASPE - 2019 - Analista de Gestão de Resíduos Sólidos SLU DF) Julgue o item, acerca de aspectos relacionados aos componentes do ciclo hidrológico.

A interceptação vegetal de parte da precipitação tende a reduzir a vazão ao longo do ano e a retardar e reduzir o pico de cheias.

A) Verdadeiro
B) Falso
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Cálculo de vigas-parede

O dimensionamento de vigas-parede pode ser realizado por meio de métodos numéricos simplificados, a exemplo do método das bielas e tirantes.

Considere uma viga-parede biapoiada com 4,0m de vão e 2,5m de altura. O braço de alavanca, formado entre a resultante das tensões de compressão e tração para a viga-parede indicada, para o dimensionamento por meio do método das bielas e tirantes, é de:

A) 1,325m.

B) 1,525m.

C) 1,650m.

D) 1,725m.

E) 1,855m.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Dimensionamento de lajes maciças à flexão

As lajes de concreto armado são elementos planos e horizontais, submetidos a carregamentos perpendiculares ao plano. Esses carregamentos promovem o desenvolvimento de esforços internos de flexão.

Analise as afirmativas a seguir referentes aos tipos de flexão:

I. A flexão normal ocorre em uma seção transversal em que atuam apenas momento fletor e esforço normal de tração ou compressão.

II. A flexão reta ocorre quando os momentos fletores atuam em planos ortogonais aos eixos principais de inércia da seção transversal.

III. Diz-se que a seção transversal de uma laje está submetida à flexão pura quando sobre ela atuam somente momentos fletores.

IV. A seção transversal de uma laje está submetida à flexão composta quando, sobre esta, atuam momentos de flexão e forças normais.

Assinale a alternativa correta:

A) Apenas a afirmativa I está correta.

B) Apenas a afirmativa III está correta.

C) As afirmativas I, II e IV estão corretas.

D) As afirmativas II, III e IV estão corretas.

E) As afirmativas I, II, III e IV estão corretas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Formas: Confecção e colocação

Em relação aos materiais utilizados para formas, assinale a alternativa correta.

A) A fibra de vidro é muito utilizada para pilares e vigas.

B) Formas em poliestireno expandido são altamente reaproveitadas.

C) Vidro é muito utilizado para concreto aparente.

D) Tubos de papelão são muito usados em pilares de seção circular e em estruturas com caixão perdido.

E) As tábuas são os materiais que proporcionam o maior reaproveitamento.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Características do concreto armado

A reologia é o ramo da mecânica que estuda a evolução de deformações de um material por causas tencionais ao longo do tempo.

O fenômeno reológico que independe do carregamento e ocorre devido à variação de umidade do concreto, gerando deformações diferenciais e tensões internas aos elementos de concreto, pode ser classificado como:

A) fissuração.

B) retração.

C) fluência.

D) deformação lenta.

E) variação de temperatura.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 30 usuários muito felizes estudando em nosso site.