O arquivo IO no Java7 passou por grandes mudanças, e muitas novas classes foram introduzidas especificamente:
importar java.nio.file.directorystream; importar java.nio.file.filesystem; importar java.nio.file.filesystems; importar java.nio.file.files; import java.nio.file.file.nio.nio.file.portss; importando java.nio.file.file.nio.nio.file.ports; java.nio.file.attribute.posixfilepermissions;
...... Espere, para substituir o método de operação IO original de arquivo baseado no java.io.file.
1. O caminho substitui o arquivo
Um caminho representa um caminho hierárquico e composto por uma sequência de elementos de diretório e nome do arquivo separados por um separador ou delimitador especial.
O caminho é usado para representar caminhos e arquivos. Existem várias maneiras de construir um objeto de caminho para representar um caminho de arquivo ou um arquivo:
1) Primeiro de tudo, existem dois métodos estáticos dos caminhos da classe final. Como construir um objeto de caminho a partir de uma string de caminho:
Caminho caminho = paths.get ("c:/", "xmp"); Caminho caminho2 = paths.get ("c:/xmp"); Uri u = uri.create ("arquivo: /// c:/xmp/dd"); Caminho p = paths.get (u);2) Construção de sistemas de arquivos:
Caminho path3 = filesystems.getDefault (). GetPath ("c:/", "access.log");3) Conversão entre arquivo e caminho, conversão entre arquivo e URI:
Arquivo de arquivo = novo arquivo ("c: /my.ini"); caminho p1 = file.topath (); p1.tofile (); file.touri ();4) Crie um arquivo:
Caminho alvo2 = paths.get ("c: //mystuff.txt"); // set <fosixfilepermission> perms = posixfilepermissions.fromstring ("rw-rw-rw-"); // fileattribute <set <posixfilepermission >> attrs = pósixfileperMions.FileTrribute <Set <PosixFilePermission>> (PosixFilePerMions.FileStRIBUT <SPIXFILEPISSION>> if (! files.exists (Target2)) arquivos.CreateFile (Target2);} Catch (IoException e) {E.PrintStackTrace ();}O POSIXFILEPERMISSION não é suportado no Windows para especificar permissões RWX.
5) Arquivos.NewBufferedReader lê o arquivo:
tente {// charset.forname ("gbk") bufferreader leitor = files.newBufferedReader (paths.get ("c: //my.ini"), standardcharsets.utf_8); String str = null; while ((str = leitor.readline ())! = null) {System.out.println (str); }} catch (ioexception e) {e.printStackTrace (); }Você pode ver que o uso de files.NewBufferEredReader é muito mais fácil do que o FileInputStream original e, em seguida, o pacote BufferredReader.
Aqui, se a codificação de caracteres especificada estiver incorreta, uma exceção poderá ser lançada ou um código distorcido poderá ser lido:
java.nio.charset.malformedInputexception: comprimento de entrada = 1 em java.nio.charset.coderresult.throwexception (coderResult.java:281) em sun.nio.cs.streamdecoder.implread (streamdecoder.java:39) sun.nio.cs.streamdecoder.read (streamdecoder.java:178) em java.io.inputStreamreader.read (inputStreamreader.java:184) em java.io.bufferedreader.fill (bufferedread.java:161) AT java.io.bufferedreader.readline (buffarredreader.java:324) em java.io.bufferedreader.readline (buffarredreader.java:389) em com.coin.test.main (test.java:79)
6) Operação de escrita de arquivos:
tente {bufferWriter writer = files.newBufferWriter (paths.get ("c: //my2.ini"), standardcharsets.utf_8); writer.write ("Operação de gravação do arquivo de teste"); writer.flush (); writer.close ();} catch (ioexception e1) {e1.printStackTrace ();}7) Atravesse uma pasta:
Caminho dir = paths.get ("d: // webworkspace"); Try (DirectoryStream <Path> stream = files.NewDirectoryStream (dir)) {for (caminho e: stream) {System.out.println (e.getFileName ()); }} catch (ioexception e) {} tente (stream <tath> stream = files.list (paths.get ("c:/"))) {iterator <thath> item = stream.iterator (); while (iTe.hasNext ()) {caminho pp = item.Next (); System.out.println (pp.getFilename ()); }} catch (ioexception e) {e.printStackTrace (); }O exposto acima está atravessando um único diretório, ele não atravessa todo o diretório. Você precisa usar: files.walkfiletree
8) Atravesse o diretório de arquivos inteiro:
public static void main (string [] args) lança IoException {path startDDir = paths.get ("c: //apache-tomcat-8.0.21"); Lista <TACH> resultado = new LinkedList <TATH> (); Files.walkfiletree (startddir, new findjavavisitor (resultado)); System.out.println ("result.size () =" + resultado.size ()); } classe estática privada findjavavisitor estende o SimpleFileVisitor <TACH> {Lista privada <TACH> Result; public findjavavisitor (list <tath> resultado) {this.result = resultado; } @Override public fileVisitResult visitfile (arquivo de caminho, BASICFILEATTRIBUTOS attrs) {if (file.toString (). Endswith (". } retornar fileVisitResult.Continue; }}Vamos dar um exemplo prático:
public static void main (string [] args) lança IoException {path startDDir = paths.get ("f: // upload // imagens"); // f: // upload // imagens // 2 // 20141206 List <TACH> resultado = new LinkedList <TACH> (); Files.walkfiletree (startddir, new findjavavisitor (resultado)); System.out.println ("result.size () =" + resultado.size ()); System.out.println ("feito"); } classe estática privada findjavavisitor estende o SimpleFileVisitor <TACH> {Lista privada <TACH> Result; public findjavavisitor (list <tath> resultado) {this.result = resultado; } @Override public fileVisitResult visitfile (arquivo de caminho, BASICFILEATTRIBUTOS ATTRS) {string filepath = file.tofile (). GetAbsolutepath (); if (filepath.matches (".*_ [1 | 2] {1} //. (? i) (jpg | jpeg | gif | bmp | png)")) {try {files.deleteXists (arquivo); } catch (ioexception e) {e.printStackTrace (); } resultado.add (file.getFilename ()); } retornar fileVisitResult.Continue; }}Exclua todas as imagens qualificadas no diretório: filepath.matches (".*_ [1 | 2] {1} //. (? I) (jpg | jpeg | gif | bmp | png)")
public static void main (string [] args) lança IoException {path startDDir = paths.get ("f: // 111111 // upload // imagens"); // f:/111111 // upload // imagens // 2 // 20141206 LIST <TACH> resultado = new LinkedList <TACH> (); Files.walkfiletree (startddir, new findjavavisitor (resultado)); System.out.println ("result.size () =" + resultado.size ()); System.out.println ("feito"); } classe estática privada findjavavisitor estende o SimpleFileVisitor <TACH> {Lista privada <TACH> Result; public findjavavisitor (list <tath> resultado) {this.result = resultado; } @Override public fileVisitResult visitfile (arquivo de caminho, BASICFILEATTRIBUTOS ATTRS) {string filepath = file.tofile (). GetAbsolutepath (); int width = 224; int altura = 300; Stringutils.substringBeLEast (filepath "."); String newpath = stringUtils.substringBeLorast (filepath, ".") + "_1." + Stringutils.substringafterlast (filepath, "."); tente {imageutil.ZoomImage (filepath, newpath, largura, altura); } catch (ioexception e) {e.printStackTrace (); retornar fileVisitResult.Continue; } resultado.add (file.getFilename ()); retornar fileVisitResult.Continue; }}Gera uma miniatura do tamanho especificado para todas as imagens no diretório. A.jpg gera a_1.jpg
2. Java.nio.file.file.Files
1) Crie diretórios e arquivos:
tente {files.createDirectories (paths.get ("c: // test")); if (! files.exists (paths.get ("c: // test"))) files.createfile (paths.get ("c: //test/test.txt")); // files.createDirectories (paths.get ("c: //test/test2.txt");} catch (»exception e) {e.prestlack);Observe que o diretório de criação e os arquivos de arquivos.CreatedDirectories e arquivos.CreateFile não pode ser misto. Você deve ter um diretório antes de poder criar arquivos no diretório.
2) Cópia do arquivo:
Cópia do arquivo para o arquivo: files.copy (fonte do caminho, destino do caminho, opções de copição);
Cópia do fluxo de entrada para o arquivo: files.copy (inputStream in, alvo de caminho, opções de copyOption);
Cópia de arquivo para saída de saída: arquivos.copy (fonte do caminho, saída de saída para fora);
tente {files.createDirectories (paths.get ("c: // test")); if (! files.exists (paths.get ("c: // test"))) files.createfile (paths.get ("c: //test/test.txt")); // files.createDirectories (paths.get ("c: //test/test2.txt"); Files.copy (paths.get ("c: //my.ini"), system.out); Files.copy (paths.get ("c: //my.ini"), paths.get ("c: //my2.ini"), padrãocopyOption.replace_existing); Files.copy (System.in, Paths.get ("c: //my3.ini"), StandardCopyOption.replace_existing);} catch (ioexception e) {e.printStacktrace ();}3) iterar através de um diretório e pasta. Foi introduzido acima: files.newdirectorystream, files.walkfiletree
4) Leia as propriedades do arquivo:
Caminho zip = paths.get (URI); System.out.println (files.getLastModifiedTime (ZIP)); System.out.println (files.size (zip)); System.out.println (files.issymbolicLink (zip)); System.out.println (files.isdirectory (zip)); System.out.println (files.readattributes (zip, "*"));
5) Leia e defina permissões de arquivo:
Perfil do caminho = Paths.get ("/home/Digdeep/.Profile"); Posixfileattributes attrs = files.readattributes (perfil, posixfileattributes.class); // permissão para ler arquivos set <posixfilepermissions> posixpermissions = atts.permissions (); posixpermissions.clear (); String proprietário = attrs.owner (). GetName (); String perms = PosixFilePerMissions.ToString (PosixPermissions); System.out.format ("%s%s%n", proprietário, perms); posixpermissions.add (posixfilepermission.owner_read); posixpermissions.add (posixfilepermission.group_read); posixpermissions.add (posixfilepermission.others_read); posixpermissions.add (posixfilepermission.owner_write); Files.setPosixFilePermissions (perfil, posixpermissions); // Defina permissões do arquivoA classe de arquivos é simplesmente poderosa, e quase todas as propriedades relacionadas de arquivos e diretórios têm a API desejada para suportar. Estou com preguiça de continuar apresentando -o aqui, consulte a documentação do JDK8 para obter detalhes.
Um exemplo prático:
importar java.io.bufferedReader; importar java.io.bufferedwriter; importar java.nio.charset.standardcharsets; importar java.nio.file.files; importar java.nio.file.path; import java.nio.file.file; Files.NewBufferedReader (paths.get ("c: //members.sql"), standardcharsets.utf_8); Bufferwriter writer = files.newBufferWriter (paths.get ("c: //members3.txt"), padrãocharsets.utf_8); String str = null; while ((str = reader.readline ())! = null) {if (str! = null && str.indexOf (", elenco (0x")! = -1 && str.indexOf ("como dateTime)")! Writer.Write (Newstr); writer.newline (); }} writer.flush (); writer.close (); } catch (Exceção e) {e.printStackTrace (); }}}O cenário é que, quando o SQL Server exporta dados, o DatATIME será exportado para um formato binário hexadecimal, como: Cast (0x0000A2A500FC2E4F como DateTime)))
Portanto, o programa acima exporta o último campo de dados de dados, exclui o elenco (0x0000A2A500FC2E4F como DateTime) para gerar um novo script SQL que não contém o valor do campo DateTime. Costumava importar para o MySQL.
No meio do caminho, há realmente uma maneira melhor. O uso de iogues SQL pode importar de maneira flexível tabelas e dados no SQL Server no MySQL. Usar a função de exportar dados do SQL Server é difícil de lidar.
O uso acima (explicação detalhada) com base na classe Java Files e Paths Class é 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.