รับวัตถุ java.nio.file.Path จาก java.io.File


215

เป็นไปได้ที่จะได้รับวัตถุเส้นทางจากjava.io.File?

ฉันรู้ว่าคุณสามารถแปลงเส้นทางเป็นไฟล์โดยใช้toFile()วิธีการ แต่ฉันไม่พบการแปลงตรงข้าม มีวิธีการทำเช่นนี้ใน Java 6 หรือต่ำกว่า?


คุณดูเอกสาร API แล้วหรือยัง?
Vivin Paliath

ใช่ฉันเห็นวิธีการแก้ปัญหาและวิธีแก้ปัญหาพี่น้อง แต่นั่นไม่ได้แปลงจากไฟล์ (หรือสตริง) ไปเป็นพา ธ อย่างแน่นอน
Karlovsky120

1
นี่คือเอกสาร @VivinPaliath กำลังพูดถึงเช่นกัน
การรับรู้

1
มันทำให้ฉันประหลาดใจว่าคำถามที่โง่ที่สุดที่เป็นไปได้ (ฉันหมายถึงมามันอยู่ในเอกสารค้นหา google สั้น ๆ จะตอบมัน) เป็นตาข่ายฉันคะแนนมากที่สุดในเว็บไซต์ : D
Karlovsky120

@ Karlovsky120 มันไม่น่าแปลกใจถ้าคุณจะลอง google ด้วยตัวคุณเอง;)
9ilsdx 9rvj 0lo

คำตอบ:


288

ใช่คุณจะได้รับจากวัตถุโดยใช้File File.toPath()โปรดทราบว่านี่สำหรับ Java 7+ เท่านั้น Java เวอร์ชัน 6 และต่ำกว่าไม่มี


1
มีวิธีในการบรรลุนี้ใน Java 6 หรือต่ำกว่า?
Karlovsky120

8
Pathเปิดตัวใน Java 7 ดังนั้นน่าเสียดายที่ไม่มีวิธีการทำเช่นนี้ใน Java 6 และต่ำกว่า
Vivin Paliath

33

จากเอกสารประกอบ :

เส้นทางที่เกี่ยวข้องกับการเริ่มต้นproviderโดยทั่วไปจะทำงานร่วมกันกับjava.io.Fileชั้นเรียน เส้นทางที่สร้างขึ้นโดยให้บริการอื่น ๆ java.io.Fileจะไม่น่าจะทำงานร่วมกันกับชื่อเส้นทางนามธรรมแสดงโดย วิธีอาจจะใช้เพื่อให้ได้เส้นทางจากชื่อเส้นทางนามธรรมแสดงโดยวัตถุ java.io.File เส้นทางที่เกิดขึ้นสามารถใช้ในการทำงานกับไฟล์เดียวกับ วัตถุ นอกจากนี้วิธีการที่เป็นประโยชน์ในการสร้างจากตัวแทนของtoPathjava.io.FiletoFileFileStringPath

(เน้นที่เหมือง)

ดังนั้นสำหรับtoFile:

ส่งคืนFileวัตถุที่เป็นตัวแทนของเส้นทางนี้

และtoPath:

ส่งคืนjava.nio.file.Pathวัตถุที่สร้างขึ้นจากเส้นทางนามธรรมนี้


1
เขาต้องการสิ่งที่ตรงกันข้าม
Vivin Paliath

ฉันไม่โต้แย้งว่า :) ฉันแค่พูดถึงสิ่งที่ OP ต้องการ
Vivin Paliath


10

ตามที่หลายคนแนะนำ JRE v1.7 ขึ้นไปมี File.toPath ();

File yourFile = ...;
Path yourPath = yourFile.toPath();

ในเอกสาร jdk 1.7ของ Oracle ซึ่งถูกกล่าวถึงในโพสต์อื่น ๆ ข้างต้นโค้ดที่เทียบเท่าดังต่อไปนี้ได้อธิบายไว้ในคำอธิบายสำหรับวิธี toPath () ซึ่งอาจใช้ได้กับ JRE v1.6;

File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.