Várias maneiras de ler arquivos em java 1. Leia o conteúdo do arquivo de várias maneiras.
1. Leia o conteúdo do arquivo por bytes
2. Leia o conteúdo do arquivo por caractere
3. Leia o conteúdo do arquivo linha por linha
4. Leia aleatoriamente o conteúdo do arquivo
*/
importar java.io.BufferedReader;
importar java.io.File;
importar java.io.FileInputStream;
importar java.io.FileReader;
importar java.io.IOException;
importar java.io.InputStream;
importar java.io.InputStreamReader;
importar java.io.RandomAccessFile;
importar java.io.Reader;
classe pública ReadFromFile {
/**
* Leia arquivos em bytes, geralmente usados para ler arquivos binários, como imagens, sons, imagens, etc.
* @param fileName O nome do arquivo
*/
public static void readFileByBytes(String fileName){
Arquivo arquivo = novo arquivo(nomeArquivo);
InputStream em = null;
tentar {
System.out.println("Lê o conteúdo do arquivo em bytes, um byte por vez:");
//Lê um byte por vez
in = novo FileInputStream(arquivo);
int tembyte;
while((tempbyte=in.read()) != -1){
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
retornar;
}
tentar {
System.out.println("Lê o conteúdo do arquivo em bytes, vários bytes por vez:");
//Lê vários bytes por vez
byte[] tempbytes = novo byte[100];
int byteread = 0;
in = new FileInputStream(nomeArquivo);
ReadFromFile.showAvailableBytes(in);
//Lê vários bytes na matriz de bytes, byteread é o número de bytes lidos de uma vez
enquanto ((byteread = in.read(tempbytes)) != -1){
System.out.write(tempbytes, 0, byteread);
}
} catch (Exceção e1) {
e1.printStackTrace();
} finalmente {
if (em! = nulo){
tentar {
in.close();
} catch (IOException e1) {
}
}
}
}
/**
* Leia arquivos em unidades de caracteres, geralmente usadas para ler texto, números e outros tipos de arquivos
* @param nomeArquivo nome do arquivo
*/
public static void readFileByChars(String fileName){
Arquivo arquivo = novo arquivo(nomeArquivo);
Leitor leitor = null;
tentar {
System.out.println("Lê o conteúdo do arquivo em unidades de caracteres, um byte por vez:");
//Lê um caractere por vez
leitor = novo InputStreamReader(novo FileInputStream(arquivo));
int tempchar;
while ((tempchar = leitor.read()) != -1){
//Para Windows, quando os dois caracteres rn estão juntos, eles representam uma nova linha.
//Mas se esses dois caracteres forem exibidos separadamente, as linhas serão alteradas duas vezes.
//Portanto, escudo r ou escudo n. Caso contrário, haverá muitas linhas em branco.
if (((char)tempchar) != 'r'){
System.out.print((char)tempchar);
}
}
leitor.close();
} catch (Exceção e) {
e.printStackTrace();
}
tentar {
System.out.println("Lê o conteúdo do arquivo em unidades de caracteres, vários bytes por vez:");
//Lê vários caracteres de uma vez
char[] tempchars = new char[30];
int charread = 0;
leitor = new InputStreamReader(new FileInputStream(fileName));
//Lê vários caracteres no array de caracteres, charread é o número de caracteres lidos por vez
enquanto ((charread = leitor.read(tempchars))!=-1){
// Da mesma forma, protege r da exibição
if ((charread == tempchars.length)&&(tempchars[tempchars.length-1] != 'r')){
System.out.print(tempchars);
}outro{
for (int i=0; i<charread; i++){
if(tempchars[i] == 'r'){
continuar;
}outro{
System.out.print(tempchars[i]);
}
}
}
}
} catch (Exceção e1) {
e1.printStackTrace();
}finalmente {
if (leitor != null){
tentar {
leitor.close();
} catch (IOException e1) {
}
}
}
}
/**
* Leia arquivos em unidades de linha, geralmente usados para ler arquivos formatados orientados a linhas
* @param nomeArquivo nome do arquivo
*/
public static void readFileByLines(String fileName){
Arquivo arquivo = novo arquivo(nomeArquivo);
Leitor BufferedReader = null;
tentar {
System.out.println("Lê o conteúdo do arquivo em unidades de linha, lendo uma linha inteira de cada vez:");
leitor = novo BufferedReader(novo FileReader(arquivo));
String tempString = null;
linha interna = 1;
//Lê uma linha por vez até que null seja lido como o final do arquivo
while ((tempString = leitor.readLine()) != null){
//mostra o número da linha
System.out.println("linha " + linha + ": " + tempString);
linha++;
}
leitor.close();
} catch (IOException e) {
e.printStackTrace();
} finalmente {
if (leitor != null){
tentar {
leitor.close();
} catch (IOException e1) {
}
}
}
}
/**
* Leia aleatoriamente o conteúdo do arquivo
* @param nomeArquivo nome do arquivo
*/
public static void readFileByRandomAccess(String fileName){
RandomAccessFile randomFile = null;
tentar {
System.out.println("Lê o conteúdo de um arquivo aleatório:");
//Abre um fluxo de arquivos de acesso aleatório em modo somente leitura
randomFile = new RandomAccessFile(nomeArquivo, "r");
//Comprimento do arquivo, número de bytes
comprimento do arquivo longo = randomFile.length();
//Lê a posição inicial do arquivo
int começarIndex = (comprimentodoarquivo> 4) 4: 0;
//Move a posição inicial do arquivo lido para a posição BeginIndex.
randomFile.seek(beginIndex);
byte[] bytes = novo byte[10];
int byteread = 0;
//Lê 10 bytes por vez Se o conteúdo do arquivo for menor que 10 bytes, leia os bytes restantes.
//Atribuir o número de bytes lidos por vez para byteread
while ((byteread = randomFile.read(bytes)) != -1){
System.out.write(bytes, 0, leitura de bytes);
}
} catch (IOException e){
e.printStackTrace();
} finalmente {
if (arquivo aleatório! = nulo){
tentar {
randomFile.close();
} catch (IOException e1) {
}
}
}
}
/**
* Exibe o número de bytes restantes no fluxo de entrada
* @param in
*/
private static void showAvailableBytes(InputStream in){
tentar {
System.out.println("O número de bytes no fluxo de entrada de bytes atual é:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String nomeArquivo = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(nomeDoArquivo);
ReadFromFile.readFileByChars(nomeDoArquivo);
ReadFromFile.readFileByLines(nomeDoArquivo);
ReadFromFile.readFileByRandomAccess(nomeDoArquivo);
}
}
2. Anexe o conteúdo ao final do arquivo
importar java.io.FileWriter;
importar java.io.IOException;
importar java.io.RandomAccessFile;
/**
* Anexe o conteúdo ao final do arquivo
*/
classe pública AppendToFile {
/**
*Um método para anexar arquivos: use RandomAccessFile
* @param nomeArquivo nome do arquivo
* @param conteúdo conteúdo adicional
*/
public static void appendMethodA(String nomeArquivo,
Conteúdo da string){
tentar {
//Abre um fluxo de arquivos de acesso aleatório, em modo de leitura e gravação
RandomAccessFile randomFile = new RandomAccessFile(nomeArquivo, "rw");
//Comprimento do arquivo, número de bytes
comprimento do arquivo longo = randomFile.length();
//Move o ponteiro do arquivo de gravação para o final do arquivo.
randomFile.seek (comprimentodoarquivo);
randomFile.writeBytes(conteúdo);
randomFile.close();
} catch (IOException e){
e.printStackTrace();
}
}
/**
* Método B para anexar arquivos: use FileWriter
* @param nomeArquivo
* @param conteúdo
*/
public static void appendMethodB(String fileName, String content){
tentar {
//Abra um gravador de arquivo. O segundo parâmetro true no construtor significa escrever o arquivo no formato anexado.
Escritor FileWriter = new FileWriter(fileName, true);
escritor.write(conteúdo);
escritor.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String nomeArquivo = "C:/temp/newTemp.txt";
String content = "novo anexo!";
//Acrescenta arquivos de acordo com o método A
AppendToFile.appendMethodA(nomedoarquivo, conteúdo);
AppendToFile.appendMethodA(fileName, "anexar final. n");
//Mostra o conteúdo do arquivo
ReadFromFile.readFileByLines(nomeDoArquivo);
//Acrescenta arquivos de acordo com o método B
AppendToFile.appendMethodB (nome do arquivo, conteúdo);
AppendToFile.appendMethodB(fileName, "anexar final. n");
//Mostra o conteúdo do arquivo
ReadFromFile.readFileByLines(nomeDoArquivo);
}
}