O JDK1.7 apresenta a nova classe de operação de arquivo java.nio.file pacote. Existe uma classe de arquivos que contém muitos métodos úteis para operar arquivos, como verificar se o arquivo é um arquivo oculto ou verificando se o arquivo é um arquivo somente leitura. Os desenvolvedores também podem usar o método Files.readallBytes (PATH) para ler o arquivo inteiro na memória. Este método retorna uma matriz de bytes e também pode passar o resultado para o construtor de string para criar saída de string. Esse método garante que, quando todos os conteúdos de bytes do arquivo forem lidos, o recurso é fechado, independentemente de haver uma exceção de IO ou outra exceção sem controle. Isso significa que, depois de ler o arquivo para o último conteúdo do bloco, não há necessidade de fechar o arquivo. Observe que esse método não é adequado para ler arquivos grandes, porque pode haver espaço de memória insuficiente. Os desenvolvedores também devem especificar a codificação de caracteres do arquivo para evitar exceções ou analisar erros.
O código -fonte do método ReadallBytes (Path):
<span style = "font-size: 32px;"> </span> <span style = "font-size: 18px;">/*** lê todos os bytes de um arquivo. O método garante que o arquivo seja * fechado quando todos os bytes foram lidos ou um erro de E/S, ou outra exceção de tempo de execução *, é lançada. * Observe que este método é destinado a casos simples em que é * conveniente ler todos os bytes em uma matriz de bytes. Não se destina a * ler em arquivos grandes. * * @param path * the path to the file * * @return a byte array containing the bytes read from the file * * @throws IOException * if an I/O error occurs reading from the stream * If greater than 2G of the file, a memory overflow exception will be thrown* @throws OutOfMemoryError * if an array of the required size cannot be allocated, for * example the file is larger that {@code 2GB} * @Throws SecurityException * No caso do provedor padrão, e um gerenciador de segurança está * instalado, o método {@link SecurityManager#checkRead (string) checkRead} * é chamado para verificar o acesso de leitura ao arquivo. */</span> <span style = "font-size: 18px;"> public static byte [] readallbytes (caminho do caminho) lança a ioexception {try (procurávelByTechannel sbc = files.newbyTechannel (path); inputStream in = canalls.NewinTream (sbc) {path); sbc.size (); if (size> (longo) max_buffer_size) lançar um novo outOfMemoryError ("tamanho da matriz necessária muito grande"); retornar leia (IN, (int) tamanho); }} </span>Apenas uma linha do arquivo é lida
pacote Entrada de pacote; importar java.io.ioException; importar java.nio.file.files; importar java.nio.file.paths; public class BufferrandChannel {public static void main (string [] args) {try {System.out.println (new String (files.readallbytes (paths.get ("c: //FileChannelImpl.java"))))); } catch (ioexception e) {e.printStackTrace (); }}}O código -fonte do método readalllines
Lista estática pública <String> readalllines (caminho do caminho, Charset cs) lança IoException {try (bufferredreader leitor = newBufferEredReader (path, cs)) {list <string> resultado = new ArrayList <> (); para (;;) {string line = reader.readline (); if (line == null) quebra; resultado.add (linha); } resultado de retorno; }} pacote Entrada de pacote; importar java.util.list; importar java.io.ioException; importar java.nio.charset.standardSetSets; importar java.nio.file.files; importar java.nio.file.paths; public class BufferandChannel {public static void main (string [] args) {// Se for um arquivo de texto, você também pode lê -lo assim. Chame o método readalllines, tente {<span style = "white-space: pré"> </span> // O segundo parâmetro pode ser omitido após o JDK1.8. O padrão é a lista de codificação UTF-8 <String> lines = files.readallLines (paths.get ("c: //fileChanNelimpl.java"), standardcharsets.utf_8); Stringbuilder sb = new stringbuilder (); para (linha de string: linhas) {sb.append (linha+"/n"); ///r/n newline} string defile = sb.toString (); System.out.println (FromFile); } catch (ioexception e) {e.printStackTrace (); }}}Como usar os fluxos Java8:
Primeiro veja a implementação do código -fonte
Public Static Stream <String> linhas (caminho do caminho) lança IoException {Return Lines (Path, StandardCharSets.utf_8); } pacote Entrada de pacote; importar java.io.ioException; importar java.nio.file.files; importar java.nio.file.paths; public class BufferandChannel {public static void main (string [] args) {// java8 adiciona o método de linhas, tente {// java8 usa streaming para ler arquivos, tornando-o mais eficiente arquivos.lines (paths.get (<span style = "font-family: arial, helvetica, sans-serif; ">" c: //FileChanNELImpl.java "</span>)). foreach (System.out :: println); } catch (ioexception e) {e.printStackTrace (); }}}Apenas uma linha é necessária para ler um arquivo e gravar um arquivo.
pacote Entrada de pacote; importar java.util.arrays; importar java.util.list; importar java.io.ioException; importar java.nio.file.files; importar java.nio.file.paths; importar java.nio.file.standardOpenoption; public class BufferrandChannel {public static void main (string [] args) {// java8 adiciona o método de linhas string filepath = "c: //filechannelimpl.java"; tente {// java8 lê arquivos em um fluxo, que é mais eficiente/*files.Lines (paths.get (filepath)). foreach ((line)-> {try {files.write (paths.get ("// 1.java"), line.getbytes (), standardoPtion.AppEnd); //files.Copy), line.getBytes (), standardoPtion.AppEnd); E.PrintStackTrace (); * / /* Files.readalllines (caminho do caminho) Retorna o valor da lista <String> tipo, projetado para arquivos.Write ()* porque o arquivo.Write () precisa passar em um parâmetro de iterable <?? estende o charsequence> type * * files.write (caminho do caminho, iterable <? Extende Charsequence> linhas, OpenOption ... opções) */ list <string> stringStream = files.readalllines (paths.get (filepath)); // porque o arquivo.Lines (caminho do caminho) retorna fluxo <String>, você pode usar o seguinte método para se tornar list <string> // list <string> stringStream2 = arrays.aslist ((string []) files.lines (paths.get (filepath)). ToArray ()); // StandardOpeNoption é uma classe de enumeração. Se o arquivo atualmente Paths.get () não existir, o terceiro parâmetro poderá ser selecionado como StandardOpeNoption.Create_New // Se o arquivo existir, jogue Java.nio.file.FileAlreadyReexistSexception Files.Write (Paths.get ("c: //2.java), stringsTream, padrãoPONOPTON.CRETEL.CRINENCLETEN (C: //2.Java"), STRINGSTREAM, padrão. } catch (ioexception e) {e.printStackTrace (); }}}O artigo acima JDK1.7 java.nio.file.files requer apenas uma linha de código para realizar o arquivo acima. Este é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.