ไฟล์ io ใน Java7 ได้รับการเปลี่ยนแปลงครั้งใหญ่และมีการแนะนำคลาสใหม่จำนวนมากโดยเฉพาะ:
นำเข้า java.nio.file.directorystream; นำเข้า java.nio.file.filesystem; นำเข้า java.nio.file.filesystems; นำเข้า java.nio.file.files; นำเข้า java.nio.file.path; java.nio.file.attribute.posixFilePermissions;
...... เดี๋ยวก่อนเพื่อแทนที่วิธีการทำงานของไฟล์ต้นฉบับ IO ตาม java.io.file
1. พา ธ แทนที่ไฟล์
เส้นทางแสดงถึงเส้นทางที่เป็นลำดับชั้นและประกอบด้วยลำดับของไดเรกทอรีและองค์ประกอบชื่อไฟล์คั่นด้วยตัวคั่นหรือคั่นแบบพิเศษ
PATH ใช้เพื่อแสดงเส้นทางไฟล์และไฟล์ มีหลายวิธีในการสร้างวัตถุเส้นทางเพื่อแสดงเส้นทางไฟล์หรือไฟล์:
1) ก่อนอื่นมีสองวิธีแบบคงที่ของเส้นทางชั้นเรียนสุดท้าย วิธีการสร้างวัตถุเส้นทางจากสตริงเส้นทาง:
PATH PATH = PATHS.GET ("C:/", "XMP"); PATH PATH2 = PATHS.GET ("C:/XMP"); uri u = uri.create ("ไฟล์: /// c:/xmp/dd"); เส้นทาง p = paths.get (u);2) การก่อสร้างระบบไฟล์:
PATH PATH3 = FileSystems.getDefault (). getPath ("C:/", "Access.log");3) การแปลงระหว่างไฟล์และพา ธ การแปลงระหว่างไฟล์และ URI:
ไฟล์ไฟล์ = ไฟล์ใหม่ ("c: /my.ini"); path p1 = file.topath (); p1.tofile (); file.touri ();4) สร้างไฟล์:
Path Target2 = paths.get ("c: //mystuff.txt"); // set <posixFilePermission> perms = posixFilePermissions.fromstring ("rw-rw-"); // fileattribute if (! files.exists (target2)) files.createfile (target2);} catch (ioexception e) {e.printstacktrace ();};ไม่รองรับ PosixFilePermission ใน Windows เพื่อระบุสิทธิ์ RWX
5) files.newbufferedreader อ่านไฟล์:
ลอง {// charset.forname ("gbk") bufferedreader reader = files.newbufferedreader (paths.get ("c: //my.ini"), StandardCharSets.UTF_8); string str = null; ในขณะที่ ((str = reader.readline ())! = null) {system.out.println (str); }} catch (ioexception e) {e.printstacktrace (); -คุณจะเห็นว่าการใช้ files.newbufferedreader นั้นง่ายกว่า FileInputStream ดั้งเดิมและจากนั้นแพ็คเกจ BufferedReader
ที่นี่หากการเข้ารหัสอักขระที่ระบุไม่ถูกต้องข้อยกเว้นอาจถูกโยนลงหรืออาจอ่านรหัสที่อ่านไม่ออก:
java.nio.charset.malformedInputexception: ความยาวอินพุต = 1 ที่ java.nio.charset.coderresult.throwexception (coderresult.java:281) ที่ sun.nio.cs.streamdecoder.implread sun.nio.cs.streamdecoder.read (streamdecoder.java:178) ที่ java.io.inputstreamreader.read (inputstreamreader.java:184) ที่ java.io.bufferedreader.fill ที่ java.io.bufferedreader.readline (bufferedreader.java:389) ที่ com.coin.test.main (test.java:79)
6) การดำเนินการเขียนไฟล์:
ลอง {bufferedWriter writer = files.newBufferedWriter (paths.get ("c: //my2.ini"), StandardCharsets.UTF_8); writer.write ("การดำเนินการเขียนไฟล์ทดสอบ"); Writer.flush (); writer.close ();} catch (ioexception e1) {e1.printstacktrace ();}7) Traverse A Folder:
Path Dir = paths.get ("d: // webworkspace"); ลอง (DirectoryStream <Path> stream = files.newdirectorystream (dir)) {สำหรับ (path e: stream) {system.out.println (e.getFilename ()); }} catch (ioexception e) {} ลอง (สตรีม <ATH> สตรีม = files.list (paths.get ("c:/"))) {iterator <atath> item = stream.iterator (); ในขณะที่ (ite.hasnext ()) {path pp = item.next (); System.out.println (pp.getfilename ()); }} catch (ioexception e) {e.printstacktrace (); -ข้างต้นกำลังสำรวจไดเรกทอรีเดียวมันไม่ผ่านไดเรกทอรีทั้งหมด คุณต้องใช้: files.walkfiletree
8) สำรวจไดเรกทอรีไฟล์ทั้งหมด:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น ioexception {path startydir = paths.get ("c: //apache-tomcat-8.0.21"); รายการ <path> result = new LinkedList <Ath> (); files.walkFileTree (เริ่มต้น, findjavavisitor ใหม่ (ผลลัพธ์)); System.out.println ("result.size () =" + result.size ()); } คลาสคงที่คลาสคงที่ FindJavavisitor ขยาย SimpleFileVisitor <Path> {รายการส่วนตัว <Path> ผลลัพธ์; Public FindJavavisitor (รายการ <path> ผลลัพธ์) {this.result = ผลลัพธ์; } @Override สาธารณะ FileVisItResult VisitFile (ไฟล์พา ธ , basicFileatTributes attrs) {ถ้า (file.toString (). endswith (". java")) {result.add (file.getFileName ()); } return filevisitresult.continue; -มาเป็นตัวอย่างที่เป็นประโยชน์:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น ioexception {path startydir = paths.get ("f: // upload // images"); // f: // upload // images // 2 // 20141206 รายการ <path> result = new LinkedList <Ath> (); files.walkFileTree (เริ่มต้น, findjavavisitor ใหม่ (ผลลัพธ์)); System.out.println ("result.size () =" + result.size ()); System.out.println ("เสร็จสิ้น"); } คลาสคงที่คลาสคงที่ FindJavavisitor ขยาย SimpleFileVisitor <Path> {รายการส่วนตัว <Path> ผลลัพธ์; Public FindJavavisitor (รายการ <path> ผลลัพธ์) {this.result = ผลลัพธ์; } @Override สาธารณะ FileVisItResult VisitFile (ไฟล์พา ธ , basicFileatTributes attrs) {String filePath = file.tofile (). getAbsolutePath (); if (filepath.matches (".*_ [1 | 2] {1} //. (? i) (jpg | jpeg | gif | bmp | png)")) {ลอง {files.deleteifexists (ไฟล์); } catch (ioexception e) {e.printstacktrace (); } result.add (file.getFilename ()); } return filevisitresult.continue; -ลบภาพที่ผ่านการรับรองทั้งหมดในไดเรกทอรี: filepath.matches (".*_ [1 | 2] {1} //. (? i) (jpg | jpeg | gif | bmp | png)")
โมฆะคงที่สาธารณะหลัก (String [] args) พ่น IOException {path artialdir = paths.get ("f: // 111111 // upload // images"); // f:/111111 // อัปโหลด // images // 2 // 20141206 รายการ <path> result = new LinkedList <Ath> (); files.walkFileTree (เริ่มต้น, findjavavisitor ใหม่ (ผลลัพธ์)); System.out.println ("result.size () =" + result.size ()); System.out.println ("เสร็จสิ้น"); } คลาสคงที่คลาสคงที่ FindJavavisitor ขยาย SimpleFileVisitor <Path> {รายการส่วนตัว <Path> ผลลัพธ์; Public FindJavavisitor (รายการ <path> ผลลัพธ์) {this.result = ผลลัพธ์; } @Override สาธารณะ FileVisItResult VisitFile (ไฟล์พา ธ , basicFileatTributes attrs) {String filePath = file.tofile (). getAbsolutePath (); ความกว้าง int = 224; ความสูง int = 300; StringUtils.substringbeforelast (filepath, "."); String newPath = stringUtils.substringbeforelast (filepath, ".") + "_1" + stringutils.substringafterlast (filepath, "."); ลอง {imageUtil.zoomimage (filepath, newpath, ความกว้าง, ความสูง); } catch (ioexception e) {e.printstacktrace (); ส่งคืน filevisitresult.continue; } result.add (file.getFilename ()); ส่งคืน filevisitresult.continue; -สร้างภาพขนาดย่อของขนาดที่ระบุสำหรับภาพทั้งหมดในไดเรกทอรี A.jpg สร้าง a_1.jpg
2. Java.nio.file.file.file
1) สร้างไดเรกทอรีและไฟล์:
ลอง {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");โปรดทราบว่าไดเรกทอรีการสร้างและไฟล์ไฟล์ createdirectories และ files.createfile ไม่สามารถผสมได้ คุณต้องมีไดเรกทอรีก่อนที่คุณจะสามารถสร้างไฟล์ในไดเรกทอรี
2) ไฟล์คัดลอก:
คัดลอกจากไฟล์ไปยังไฟล์: files.copy (Path Source, Path Target, CopyOption Options);
คัดลอกจากสตรีมอินพุตไปยังไฟล์: files.copy (inputstream in, path target, copyoption ตัวเลือก);
คัดลอกจากไฟล์ไปยังสตรีมเอาท์พุท: files.copy (แหล่งที่มาของพา ธ , เอาท์พุทสตรีมออก);
ลอง {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"), StandardCopyOption.replace_existing); files.copy (system.in, paths.get ("c: //my3.ini"), StandardCopyOption.replace_existing);} catch (ioexception e) {e.printstacktrace ();};3) วนซ้ำผ่านไดเรกทอรีและโฟลเดอร์ มันได้รับการแนะนำข้างต้น: files.newdirectorystream, files.walkfiletree
4) อ่านคุณสมบัติไฟล์:
เส้นทาง 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) อ่านและตั้งค่าสิทธิ์ไฟล์:
Path Profile = paths.get ("/home/digdeep/.profile"); posixFileatTributes attrs = files.readattributes (โปรไฟล์, posixfileattributes.class); // การอนุญาตให้อ่านชุดไฟล์ <posixFilePermissions> posixperMissions = attrs.permissions (); posixpermissions.clear (); string owner = attrs.owner (). getName (); สตริง perms = posixFilePermissions.toString (posixpermissions); System.out.format ("%s%s%n", เจ้าของ, perms); posixpermissions.add (posixFilePermission.OWNER_READ); posixpermissions.add (posixFilePermission.group_read); posixpermissions.add (posixFilePermission.others_read); posixpermissions.add (posixFilePermission.OWNER_WRITE); files.setPosixFilePermissions (โปรไฟล์, posixpermissions); // ตั้งค่าสิทธิ์ของไฟล์คลาสไฟล์มีประสิทธิภาพเพียงและคุณสมบัติที่เกี่ยวข้องเกือบทั้งหมดของไฟล์และไดเรกทอรีมี API ที่ต้องการเพื่อรองรับ ฉันขี้เกียจเกินไปที่จะแนะนำที่นี่โปรดดูเอกสารของ JDK8 สำหรับรายละเอียด
ตัวอย่างที่ใช้งานได้จริง:
นำเข้า java.io.bufferedreader; นำเข้า java.io.bufferedwriter; นำเข้า java.nio.charset.standardcharsets; นำเข้า java.nio.file.files; นำเข้า java.nio.file.path; นำเข้า java.nio = files.newBufferedReader (paths.get ("c: //members.sql"), StandardCharSets.UTF_8); bufferedWriter writer = files.newBufferedWriter (paths.get ("c: //members3.txt"), StandardCharsets.UTF_8); string str = null; ในขณะที่ ((str = reader.readline ())! = null) {ถ้า (str! = null && str.indexof (", cast (0x")! = -1 && str.indexof ("เป็น datetime)")! Writer.write (NewsTR); Writer.Newline (); }} writer.flush (); Writer.close (); } catch (exception e) {e.printstacktrace (); -สถานการณ์คือเมื่อ SQL Server ส่งออกข้อมูล DataTime จะถูกส่งออกไปยังรูปแบบไบนารี hexadecimal เช่น: CAST (0x0000A2A500FC2E4F เป็น DateTime)))
ดังนั้นโปรแกรมข้างต้นจะส่งออกฟิลด์ Datatime ล่าสุดลบ Cast (0x0000a2a500fc2e4f เป็น dateTime) เพื่อสร้างสคริปต์ SQL ใหม่ที่ไม่มีค่าฟิลด์ DateTime ใช้ในการนำเข้าสู่ MySQL
ผ่านไปครึ่งทางมีวิธีที่ดีกว่าจริง ๆ การใช้ SQL YOG สามารถนำเข้าตารางและข้อมูลใน SQL Server ลงใน MySQL ได้อย่างยืดหยุ่น การใช้ฟังก์ชั่นการส่งออกข้อมูลจาก SQL Server นั้นยากที่จะจัดการ
การใช้งานข้างต้น (คำอธิบายโดยละเอียด) ขึ้นอยู่กับคลาส Java Files และคลาส Paths เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น