Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1 import java.io.FileWriter;
2 import java.io.IOException;
import java.io.PrintWriter;
3 import java.util.Scanner;
4
5 public class Exemplo {
6
7 public static void main(String[] args) throws IOException {
8 Scanner ler = new Scanner(System.in);
9 int i, n;
10
11 System.out.printf("Informe o número para a tabuada:\n");
n = ler.nextInt();
12
13 FileWriter arq = new FileWriter("d:\\tabuada.txt");
14 PrintWriter gravarArq = new PrintWriter(arq);
15
16 gravarArq.printf("+--Resultado--+%n");
17 for (i=1; i<=10; i++) {
gravarArq.printf("| %2d X %d = %2d |%n", i, n, (i*n));
18 }
19 gravarArq.printf("+-------------+%n");
20
21 arq.close();
22
23 System.out.printf("\nTabuada do %d foi gravada com sucesso em
24 \"d:\\tabuada.txt\".\n", n);
}
25
26}
27
28
29
Neste artigo vou explicar passo a passo como criar um programa que a
realiza leitura e escrita de um arquivo .txt. em Java
Para nosso exemplo foi criado um arquivo chamado 'file.txt' que tem como
objetivo ser utilizado para leitura e escrita pelo programa que será criado
passo a passo ao longo deste artigo. Neste exemplo o arquivo foi criado
através de um terminal Linux, porém o mesmo pode ser criado de qualquer
maneira, cabe ao leitor escolher a melhor forma para criação do arquivo
(notepad, gedit,vim...). Inicialmente este arquivo está vazio como pode ser
visto abaixo:
ManipuladorArquivo.java
Principal.java
2.1 ManipuladorArquivo.java
Classe que tem como função manipular (leitura e escrita) do arquivo txt.
Abaixo é possível ver a classe ManipuladorArquivo.java e seus métodos.
1 package gomes.fernando.robson;
2
3 import java.io.BufferedReader;
import java.io.BufferedWriter;
4 import java.io.FileReader;
5 import java.io.FileWriter;
6 import java.io.IOException;
7 import java.util.Scanner;
8
9 public class ManipuladorArquivo {
10 public static void leitor(String path) throws IOException {
11 BufferedReader buffRead = new BufferedReader(new
12FileReader(path));
13 String linha = "";
14 while (true) {
if (linha != null) {
15 System.out.println(linha);
16
17 } else
18 break;
19 linha = buffRead.readLine();
}
20
buffRead.close();
21 }
22
23 public static void escritor(String path) throws IOException {
24 BufferedWriter buffWrite = new BufferedWriter(new
25 FileWriter(path));
String linha = "";
26 Scanner in = new Scanner(System.in);
27 System.out.println("Escreva algo: ");
28 linha = in.nextLine();
29 buffWrite.append(linha + "\n");
30 buffWrite.close();
}
31
32}
33
34
35
36
Esta classe contém dois métodos estáticos, um para realizar a leitura (leitor) e
outro para realizar a escrita(escritor) em arquivos txt.
Esse método tem como principal objetos internos o BufferedReader que nada
mais é que a classe responsável por gera o buffer que será utilizado para
realizar a leitura do arquivo .txt.
Uma parte importante deste método, responsável por exibir na tela as linhas
do arquivo txt poder ser considerado o trecho do laço while que contém o
método utilizado para obter o valor de uma linha (string), no exemplo
utilizado o valor da linha foi atribuída a uma variável do tipo String como
pode ser visto abaixo:
linha = buffRead.readLine();
Esse método tem como principal objeto interno o BufferedWriter, que nada
mais é que a classe responsável por gerar o bufferque será utilizado para
realizar a escrita no arquivo .txt.
Uma parte importante deste método, responsável por inserir no arquivo txt é
exatamente o método append localizado no objeto buffWrite. Este método
tem como função inserir uma nova sequência de caracteres ao arquivo texto.
buffWrite.append(linha+"\n");
2.1.4 Importante
buffWrite.close(); ou buffRead.close();
2.2 Principal.java
1
2 package gomes.fernando.robson;
3
import java.io.IOException;
4
5 public class Principal {
6
7 public static void main(String args[]) throws IOException {
8 String path = "/tmp/file.txt";
9
10 ManipuladorArquivo.escritor(path);
ManipuladorArquivo.leitor(path);
11 }
12
13}
14
A classe contém um único método estático (main) que tem como função rodar
o ManipuladorArquivo, passando para os métodos do mesmo o path do
arquivo a ser manipulado.
Conclusão
O Java como as linguagens C e C++ são linguagens com vetores zero-based, isto
é, as posições do vetor iniciam a numeração a partir do valor 0, portanto, um
vetor de tamanho 10 teria índices iniciados em 0 prosseguindo até o 9.
Em síntese
int n = 10; // tamanho do vetor
1
int v[] = new int[n]; // declaração e alocação de espaço para o vetor
2"v"
Representação interna:
v[0] v[1] v[2] v[3] v[4] v[5] v[6] v[7] v[8] v[9]
0 1 2 3 4 5 6 7 8 9
1 import java.util.Scanner;
4
public static void main(String[] args) {
5
Scanner ler = new Scanner(System.in);
6
7
int n = 10; // tamanho do vetor
8
int v[] = new int[n]; // declaração do vetor "v"
9
int i; // índice ou posição
10
14 v[i] = ler.nextInt();
}
15
16
// Processamento: somar todos os valores, definir o maior e o menor
17valor
18 int soma = 0;
23
if (v[i] < menor)
24
menor = v[i];
25
26
if (v[i] > maior)
27
maior = v[i];
28 }
29
31 System.out.printf("\n");
if (v[i] == menor)
33
System.out.printf("v[%d] = %2d <--- menor valor\n", i,
34v[i]);
43}
44
45
A classe Math contém diversos métodos estáticos (não exige uma instância da
classe para utilização) destinados a operações numéricas, citando:
ou Selection Sort:
Inicialização de vetores
Isso significa que nome[0] terá o valor Juca Bala, nome[1] terá o valor Maria
da Silva, nome[2] terá o valor Marcos Paqueta. Nota-se que não é necessário
indicar o tamanho do vetor e também fazer a alocação de espaço através do
operador new. O tamanho do vetor será conhecido através do campo length
como mostra a aplicação a seguir:
2 instrução;
3}
Onde "parâmetro" tem duas partes: a) um tipo (deve corresponder ao tipo dos
elementos no vetor), e b) um identificador, por exemplo: int nro.
Parte II
<
Entendendo a atribuição:
Inicialização de vetores
Isso significa que nome[0] terá o valor Juca Bala, nome[1] terá o
valor Maria da Silva, nome[2] terá o valor Marcos Paqueta. Nota-se
que não é necessário indicar o tamanho do vetor e também fazer a
alocação de espaço através do operador new. O tamanho do vetor será
conhecido através do campo length como mostra a aplicação a seguir:
2 instrução;
3}
Parte III
Representação interna:
m[0][0
m[0][1] m[0][2] m[0][3]
]
m[1][0
m[1][1] m[1][2] m[1][3]
]
2) Declarando e inicializando:
1int m[][] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
1
// 1ª linha:
2
m[0][0] = 1;
3
m[0][1] = 2;
4 m[0][2] = 3;
5
6 // 2ª linha:
7 m[1][0] = 4;
8 m[1][1] = 5;
9 m[1][2] = 6;
10
// 3ª linha:
11
m[2][0] = 7;
12
m[2][1] = 8;
13
m[2][2] = 9;
14
2 m[0][0] = 1;
3 m[0][1] = 2;
4
6 m[1][0] = 4;
m[1][1] = 5;
7
m[1][2] = 6;
8
m[1][3] = 7;
9
m[1][4] = 8;
10
11
// 3ª linha com 3 colunas:
12 m[2][0] = 9;
13 m[2][1] = 10;
14 m[2][2] = 11;
15
3 m.length
11 System.out.printf("\n");
12 }
13
7
for (i=0; i<2; i++) {
8
System.out.printf("Informe os elementos %da. linha:\n",
9 (i+1));
16 System.out.printf("\n");
17 for (i=0; i<2; i++) {
18 System.out.printf("%da. linha: ", (i+1));
21 }
System.out.printf("\n");
22
}
23
}
24
}
25
26
1
public class Matriz2 {
2 public static void main(String[] args) {
3 int n = 6;
4 int i, j, m[][] = new int[n][n];
17 }
18 System.out.printf("\n");
19 }
}
20
}
21
Listagem 2- Matriz quadrada: diagonal principal e diagonal secundária.
Listagem 1:
Listagem 2:
Referência
Obrigado e um abraço.