Programação Java: leitura de um arquivo
Muitos programas Java ler caracteres do teclado do computador. Esses programas usam coisas como Scanner, System.in, e nextDouble - coisas definidas na API do Java. o DoPayroll programa nesta lista coloca uma nova rodada sobre esta história. Em vez de ler os caracteres do teclado, o programa lê os caracteres do EmployeeInfo.txt Arquivo. O arquivo vive no disco rígido do seu computador.
importação java.util.Scanner-import java.io.File-import java.io.IOException classe pública DoPayroll {void main (args String []) public static lança IOException {Scanner diskScanner = new Scanner (new File ( "EmployeeInfo. txt ")) - para (int empnum = 1- empnum lt; = 3- empnum ++) {payOneEmployee (diskScanner) -} diskScanner.close () -} payOneEmployee void (aScanner Scanner estática) {Employee anEmployee = new Employee()-anEmployee.setName(aScanner.nextLine())-anEmployee.setJobTitle(aScanner.nextLine())-anEmployee.cutCheck(aScanner.nextDouble())-aScanner.nextLine()-}}
Para ler caracteres de um arquivo, você pode usar algumas das mesmas coisas que ajudam você a ler caracteres do teclado. Você usa Scanner, nextDouble, e outras guloseimas. Mas para além destas guloseimas, você tem alguns obstáculos extras para pular. Aqui está uma lista:
VOCÊ precisa de novo arquivo objeto. Para ser mais preciso, você precisa de uma nova instância da API do Arquivo classe. Você fica com essa nova instância com o código como
new File ( "EmployeeInfo.txt")
O material entre aspas é o nome de um arquivo - um arquivo no disco rígido do seu computador. O arquivo contém caracteres.
Neste ponto, a terminologia faz montanhas de montículos. Claro, as frases novo arquivo objeto e novo arquivo instânciaaparecer, mas tudo que você está fazendo é new File ( "EmployeeInfo.txt") estar para um arquivo no seu disco rígido. Depois de enfiar new File ( "EmployeeInfo.txt") para dentro new Scanner,
Scanner diskScanner = new Scanner (new File ( "EmployeeInfo.txt")) -
você pode esquecer tudo sobre o novo arquivo o negócio. A partir desse ponto no código, diskScanner representa o EmployeeInfo.txt filename no disco rígido do seu computador. (O nome diskScanner significa um arquivo em seu disco rígido, assim como, nos exemplos anteriores, o nome teclado significa aqueles botões que você pressiona o dia-sim, dia-out.)
criando um novo arquivo objeto na listagem é como criar um novo empregado objeto mais tarde na mesma listagem. A única diferença é que o Empregado e Conta classes são definidas nos exemplos deste livro. o Arquivo classe é definido na API do Java.
Quando se liga a um arquivo em disco com new Scanner, não se esqueça do novo arquivo parte. Se você escrever new Scanner ( "EmployeeInfo.txt") sem novo arquivo, o compilador não vai se importar. (Você não terá quaisquer avisos ou mensagens de erro antes de executar o código.) Mas quando você executar o código, você não vai conseguir nada parecido com os resultados que você espera obter.
Você deve consultar o Arquivo classe por seu nome completo - java.io.File. Você pode fazer isso com uma declaração de importação como a que na listagem. Alternativamente, você pode sobrecarregar o seu código com uma declaração como
diskScanner Scanner = new Scanner (nova java.io.File ( "EmployeeInfo.txt")) -
VOCÊ precisa de lança IOException cláusula. Muitas coisas podem dar errado quando o programa se conecta a EmployeeInfo.txt. Por um lado, o seu disco rígido pode não ter um arquivo chamado EmployeeInfo.txt.
Por outro lado, o arquivo EmployeeInfo.txt pode estar no diretório errado. Para se preparar para este tipo de calamidade, a linguagem de programação Java toma certas precauções. A linguagem insiste que, quando um arquivo de disco está envolvido, você reconhece os possíveis perigos de chamar new Scanner.
Pode reconhecer os riscos de várias maneiras possíveis, mas a maneira mais simples é a utilização de um lança cláusula. No perfil, o a Principal do método de cabeçalho termina com as palavras lança IOException. Ao acrescentar estas duas palavras, você apaziguar o compilador Java.
É como se você está dizendo # 147-Eu sei que chamar new Scanner pode conduzir a problemas. Você não tem que me lembrar. # 148- E, com certeza, acrescentando lança IOException para o seu a Principal método mantém o compilador de reclamar. (Sem isso lança cláusula, você recebe um exceção não declarada mensagem de erro.)