Het maken van een bestand is een zeer gebruikelijke IO-operatie. Vandaag zullen we verschillende manieren bekijken om een bestand te maken in Java.
Java bestand maken
Er zijn drie populaire methoden om een bestand te maken in Java. Laten we ze één voor één bekijken.
-
File.createNewFile()
java.io.File
-klasse kan worden gebruikt om een nieuw bestand te maken in Java. Wanneer we een File-object initialiseren, geven we de bestandsnaam op en vervolgens kunnen we de methodecreateNewFile()
aanroepen om een nieuw bestand te maken in Java. DecreateNewFile()
-methode van het File-object retourneerttrue
als er een nieuw bestand is gemaakt enfalse
als het bestand al bestaat. Deze methode gooit ook een java.io.IOException wanneer het niet lukt om het bestand te maken. De gemaakte bestanden zijn leeg en hebben nul bytes. Wanneer we het File-object maken door de bestandsnaam door te geven, kan dit met een absoluut pad, of we kunnen alleen de bestandsnaam opgeven of we kunnen het relatieve pad opgeven. Voor een niet-absoluut pad probeert het File-object bestanden te vinden in de projecthoofdmap. Als we het programma uitvoeren vanaf de opdrachtregel, probeert het File-object voor het niet-absoluut pad bestanden te vinden vanuit de huidige map. Bij het maken van het bestandspad moeten we de systeemeigenschapfile.separator
gebruiken om ons programma platformonafhankelijk te maken. Laten we verschillende scenario’s bekijken met een eenvoudig Java-programma om een nieuw bestand te maken in Java.package com.journaldev.files; import java.io.File; import java.io.IOException; public class CreateNewFile { /** * Deze klasse toont hoe een bestand te maken in Java * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String fileSeparator = System.getProperty("file.separator"); //absoluut bestandsnaam met pad String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt"; File file = new File(absoluteFilePath); if(file.createNewFile()){ System.out.println(absoluteFilePath+" Bestand Gemaakt"); }else System.out.println("Bestand "+absoluteFilePath+" bestaat al"); //alleen bestandsnaam file = new File("file.txt"); if(file.createNewFile()){ System.out.println("file.txt Bestand Gemaakt in de hoofdmap van het project"); }else System.out.println("Bestand file.txt bestaat al in de hoofdmap van het project"); //relatief pad String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile()){ System.out.println(relativePath+" Bestand Gemaakt in de hoofdmap van het project"); }else System.out.println("Bestand "+relativePath+" bestaat al in de hoofdmap van het project"); } }
Wanneer we het bovenstaande programma voor de eerste keer uitvoeren vanuit Eclipse IDE, wordt de onderstaande uitvoer geproduceerd.
/Users/pankaj/file.txt Bestand Gemaakt file.txt Bestand Gemaakt in de hoofdmap van het project Uitzondering in thread "main" java.io.IOException: Bestand of map bestaat niet bij java.io.UnixFileSystem.createFileExclusively(Native Method) bij java.io.File.createNewFile(File.java:947) bij com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
Voor het relatieve pad gooit het een IOException omdat de
tmp
-map niet aanwezig is in de hoofdmap van het project. Dus het is duidelijk datcreateNewFile()
alleen probeert het bestand te maken en elke map, of het nu absoluut of relatief is, al aanwezig moet zijn, anders gooit het eenIOException
. Dus ik heb de “tmp”-map aangemaakt in de hoofdmap van het project en het programma opnieuw uitgevoerd, hier is de uitvoer.Bestand /Users/pankaj/file.txt bestaat al Bestand file.txt bestaat al in de hoofdmap van het project tmp/file.txt Bestand Gemaakt in de hoofdmap van het project
De eerste twee bestanden waren al aanwezig, dus
createNewFile()
retourneertfalse
, het derde bestand is gemaakt in de tmp-map en retourneert true. Elke volgende uitvoering resulteert in de volgende uitvoer:Bestand /Users/pankaj/file.txt bestaat al Bestand file.txt bestaat al in de hoofdmap van het project Bestand tmp/file.txt bestaat al in de hoofdmap van het project
Als je hetzelfde programma uitvoert vanuit de map met klassen in de terminal, is hier de uitvoer.
//eerste uitvoering vanuit de uitvoermap van klassen pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Bestand /Users/pankaj/file.txt bestaat al file.txt Bestand Gemaakt in de hoofdmap van het project Uitzondering in thread "main" java.io.IOException: Bestand of map bestaat niet bij java.io.UnixFileSystem.createFileExclusively(Native Method) bij java.io.File.createNewFile(File.java:947) bij com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32) //tmp-map bestaat niet, laten we deze aanmaken pankaj:~/CODE/JavaFiles/bin$ mkdir tmp //tweede keer uitvoeren pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Bestand /Users/pankaj/file.txt bestaat al Bestand file.txt bestaat al in de hoofdmap van het project tmp/file.txt Bestand Gemaakt in de hoofdmap van het project //derde en volgende uitvoeringen pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Bestand /Users/pankaj/file.txt bestaat al Bestand file.txt bestaat al in de hoofdmap van het project Bestand tmp/file.txt bestaat al in de hoofdmap van het project
-
FileOutputStream.write(byte[] b)
Als je een nieuw bestand wilt maken en tegelijkertijd wat gegevens wilt schrijven, kun je de FileOutputStream write-methode gebruiken. Hieronder staat een eenvoudig voorbeeld van de code om het gebruik ervan te laten zien. De regels voor absoluut pad en relatief pad die hierboven zijn besproken, zijn ook van toepassing in dit geval.
String fileData = "Pankaj Kumar"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
-
Java NIO Files.write()
We kunnen de klasse Java NIO Files gebruiken om een nieuw bestand te maken en er gegevens in te schrijven. Dit is een goede optie omdat we ons geen zorgen hoeven te maken over het sluiten van IO-bronnen.
String fileData = "Pankaj Kumar"; Files.write(Paths.get("name.txt"), fileData.getBytes());
Dat is alles voor het maken van een nieuw bestand in het Java-programma.
Je kunt meer voorbeelden van core Java vinden in onze GitHub Repository.
Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file