หากฉันต้องการสร้างไฟล์C:/a/b/test.txtฉันสามารถทำสิ่งต่อไปนี้ได้:
File f = new File("C:/a/b/test.txt");นอกจากนี้ฉันต้องการใช้FileOutputStreamเพื่อสร้างไฟล์ ดังนั้นฉันจะทำอย่างไร ด้วยเหตุผลบางอย่างไฟล์ไม่ได้ถูกสร้างขึ้นในไดเรกทอรีที่ถูกต้อง
หากฉันต้องการสร้างไฟล์C:/a/b/test.txtฉันสามารถทำสิ่งต่อไปนี้ได้:
File f = new File("C:/a/b/test.txt");นอกจากนี้ฉันต้องการใช้FileOutputStreamเพื่อสร้างไฟล์ ดังนั้นฉันจะทำอย่างไร ด้วยเหตุผลบางอย่างไฟล์ไม่ได้ถูกสร้างขึ้นในไดเรกทอรีที่ถูกต้อง
คำตอบ:
วิธีที่ดีที่สุดที่จะทำคือ:
String path = "C:" + File.separator + "hello" + File.separator + "hi.txt";
// Use relative path for Unix systems
File f = new File(path);
f.getParentFile().mkdirs(); 
f.createNewFile();
new File("/a/b/test.txt")งานได้กับทั้งสองระบบ บน Windows จะถูกเขียนไปยังดิสก์เดียวกับที่ JVM ทำงาน
                    f.getParentFile().mkdirs(); f.createNewFile();
                    คุณต้องให้แน่ใจว่ามีไดเรกทอรีหลักก่อนที่จะเขียน File#mkdirs()คุณสามารถทำได้โดย
File f = new File("C:/a/b/test.txt");
f.getParentFile().mkdirs();
// ...
ด้วยJava 7คุณสามารถใช้Path, PathsและFiles:
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateFile {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("/tmp/foo/bar.txt");
        Files.createDirectories(path.getParent());
        try {
            Files.createFile(path);
        } catch (FileAlreadyExistsException e) {
            System.err.println("already exists: " + e.getMessage());
        }
    }
}
ใช้:
File f = new File("C:\\a\\b\\test.txt");
f.mkdirs();
f.createNewFile();แจ้งให้ทราบล่วงหน้าฉันเปลี่ยนเครื่องหมายทับซ้ายไปเป็นเครื่องหมายแบ็กสแลชสองเท่าสำหรับเส้นทางในระบบไฟล์ของ Windows สิ่งนี้จะสร้างไฟล์เปล่าบนเส้นทางที่กำหนด
createNewFile()คือโดยวิธีการที่ไม่จำเป็นเมื่อคุณเขียนถึงมันด้วยFileOutputStreamล่ะค่ะ
                    วิธีที่ดีกว่าและง่ายกว่าในการทำเช่นนี้:
File f = new File("C:/a/b/test.txt");
if(!f.exists()){
   f.createNewFile();
}String path = "C:"+File.separator+"hello";
String fname= path+File.separator+"abc.txt";
    File f = new File(path);
    File f1 = new File(fname);
    f.mkdirs() ;
    try {
        f1.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}สิ่งนี้ควรสร้างไฟล์ใหม่ภายในไดเรกทอรี
สร้างไฟล์ใหม่ในเส้นทางที่ระบุ
import java.io.File;
import java.io.IOException;
public class CreateNewFile {
    public static void main(String[] args) {
        try {
            File file = new File("d:/sampleFile.txt");
            if(file.createNewFile())
                System.out.println("File creation successfull");
            else
                System.out.println("Error while creating File, file already exists in specified path");
        }
        catch(IOException io) {
            io.printStackTrace();
        }
    }
}เอาท์พุทโปรแกรม:
การสร้างไฟล์สำเร็จ
น่าแปลกที่คำตอบจำนวนมากไม่ได้ให้รหัสการทำงานที่สมบูรณ์ นี่มันคือ:
public static void createFile(String fullPath) throws IOException {
    File file = new File(fullPath);
    file.getParentFile().mkdirs();
    file.createNewFile();
}
public static void main(String [] args) throws Exception {
    String path = "C:/donkey/bray.txt";
    createFile(path);
}หากต้องการสร้างไฟล์และเขียนสตริงที่นั่น:
BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get("Path to your file"));
bufferedWriter.write("Some string"); // to write some data
// bufferedWriter.write("");         // for empty file
bufferedWriter.close();ใช้งานได้กับ Mac และ PC
สำหรับการใช้ FileOutputStream ให้ลองสิ่งนี้:
public class Main01{
    public static void main(String[] args) throws FileNotFoundException{
        FileOutputStream f = new FileOutputStream("file.txt");
        PrintStream p = new PrintStream(f);
        p.println("George.........");
        p.println("Alain..........");
        p.println("Gerard.........");
        p.close();
        f.close();
    }
}