Você está aqui: Java ::: Dicas & Truques ::: Entrada e Saída em Arquivos (File Input/Output - IO) |
Entendendo e aprendendo a usar a classe RandomAccessFileQuantidade 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. |
![]() |
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 arquivoQuantidade 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); 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 FileWriterQuantidade 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 JavaQuantidade 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. 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árioQuantidade 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 } Informe um número inteiro de qualquer tamanho: 4983 O número informado possui 4 dígitos 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 JavaQuantidade 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 JavaQuantidade 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 JavaQuantidade 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 |
Delphi - Como retornar a quantidade de itens em uma TListBox do Delphi usando a propriedade Items.Count JavaScript - Como testar se uma string termina com uma determinada substring em JavaScript usando a função endsWith() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |