Inhoudsopgave
Ondanks het werken met Databases Het is een zeer goede zaak en het bespaart ons veel werk bij het maken van query's en het koppelen van records, er zijn momenten waarop we bestanden moeten genereren, omdat we geen server hebben Database beschikbaar zijn of misschien omdat we geen record hoeven op te slaan, maar een niet-gerelateerde dataset.Bestandsbeheer is een gebied dat door velen nog steeds als complex of misschien achterhaald wordt beschouwd, maar dit is onjuist, het genereren van bestanden is van vitaal belang bij de ontwikkeling van systemen en applicaties. Een bestand kan variëren van het genereren van a .tekst met enkele lijnen in het bijzonder, tot de generatie van grote .xml dat we een configuratie kunnen definiëren.
Om alles aan te pakken dat te maken heeft met het maken van een bestand op een systeem, Java reken op de klas Bestand binnen het bibliotheekpakket voor gegevensinvoer en -uitvoer java.io. Deze klasse biedt ons verschillende methoden waarmee we bewerkingen kunnen uitvoeren variërend van bestanden maken en verwijderen, mappen maken, machtigingen valideren, enz..
Voordat we in de praktijk zien hoe we de klasse kunnen gebruiken om bestandsbewerkingen uit te voeren, moeten we begrijpen dat ze enkele van hun belangrijkste methoden uitvoeren, hiermee hebben we een theoretische basis waar we naartoe kunnen gaan wanneer we een bepaald probleem tegenkomen dat vereist afhandeling van bestanden in onze programma's:
bestaat ()Deze methode geeft ons een Booleaans antwoord over het bestaan van een bepaald bestand in een map die we specificeren wanneer we het aanroepen, uiteraard geeft het waar of waar als het bestand wordt gevonden en onwaar of onwaar als dat niet het geval is.
getCanonicalPath ()Deze methode retourneert de volledige naam inclusief het bestandspad, het is erg belangrijk om de absolute positie van ons bestand te verkrijgen binnen het systeem waarop we ons programma uitvoeren.
getName ()In tegenstelling tot de vorige methode, retourneert dit alleen de relatieve en korte naam van het bestand, dat wil zeggen, zonder het adres of de map waarin het zich bevindt op te nemen.
kunnen lezen ()Met deze methode kunnen we controleren of we toestemming hebben om het bestand te lezen, het is erg belangrijk om te valideren of we een bestand kunnen lezen voordat we er een bewerking mee starten, op deze manier kunnen we uitzonderingen verminderen en systeembronnen besparen.
kan schrijven ()Dit is een andere methode die ons helpt om de machtigingen voor de bestanden te valideren, wanneer we deze toepassen op een instantie van de klasse Bestand laat ons weten of we het bijbehorende bestand kunnen schrijven.
lengte ()Deze methode is een van de handigste omdat het ons in staat stelt de grootte van een bestand te kennen, een belangrijke controle bij het verwerken.
isFile ()Ten slotte stelt deze methode ons in staat om te weten of wat we evalueren een bestand of een map is, zodat we weten of we aan de structuur werken die we willen.
De een bestand maken Het is een proces waarbij we schrijven binnen het systeem waarop ons programma draait. Er is een verschil tussen het schrijven van een bestand en het schrijven in een bestand, de eerste vertelt ons dat we het bestand binnen het systeem genereren, maar dat we niet noodzakelijkerwijs de inhoud eraan hebben toegevoegd; Aan de andere kant vertelt de tweede ons dat we inhoud toevoegen aan een bestaand bestand.
Ze kunnen zich afvragen waarom we een leeg bestand willen, een leeg bestand is niet nutteloos, het kan onderdeel zijn van een groter proces binnen een applicatie, bijvoorbeeld een methode maakt het bestand aan en na een resultaat van een proces zorgt een andere methode voor add gegevens eraan. Het kan ook van vitaal belang zijn bij validaties, waarbij we tijdelijke bestanden genereren om aan het programma aan te geven in welke fase van het proces we ons bevinden, enz.
Laten we hieronder een kleine code bekijken waarin we een leeg plat bestand genereren.
java.io importeren *; java.io.Bestand importeren; public class CreateFiles {public static void main (String [] argv) gooit IOException {if (argv.length == 0) {System.err.println ("Je moet een naam invoeren per parameter"); Systeem.exit (1); } for (String bestandsnaam: argv) {nieuw bestand (bestandsnaam) .createNewFile (); }}}
We zien dat het eerste wat we doen een import is van de klassen van java.io om toegang te krijgen tot de afhandeling van uitzonderingen met: IOUitzondering, dan importeren we de klasse java.io.Bestand dat is wat ons in staat stelt om de bestanden rechtstreeks te manipuleren.
Vervolgens maken we onze klasse en in zijn methode voornaamst We geven aan dat het argumenten zal ontvangen, dit doen we om dynamisch de namen van de bestanden aan te geven. Omdat we een naam nodig hebben, doen we een kleine validatie, die aangeeft dat als een bestandsnaam niet wordt ontvangen, wordt gevraagd deze te plaatsen en het programma wordt beëindigd. Ten slotte zullen we voor elk ontvangen argument een nieuw bestand maken, hiermee doen we een nieuwe instantie van de klasse Bestand en met de methode maakNieuwBestand () we genereren het bestand in het systeem.
We moeten ons ervan bewust zijn dat als ons programma niet voldoende rechten heeft om een bestand in zijn directory te maken, we een foutmelding krijgen. Laten we zonder verder oponthoud eens kijken hoe ons programma eruitziet wanneer we het op de console uitvoeren:
VERGROTEN
We kunnen zien hoe onze eerste validatie werkte en wanneer we de bestandsnaam hebben doorgegeven, is deze gegenereerd, om de laatste te verifiëren, hebben we eenvoudig een dir van onze directory en dus verifiëren we het bestaan van het bestand.Een andere van de meest voorkomende bewerkingen bij het werken met bestanden na het schrijven en verwijderen is hernoemen, hiervoor in Java We moeten een proces volgen dat misschien ingewikkeld lijkt, maar, zoals we zullen zien in het voorbeeld dat bij de uitleg hoort, is het iets dat vrij gemakkelijk te begrijpen is.
Hoe je dat doet?Hernoem een bestand in Java vereist twee objecten van het type Bestand, de eerste bevat het bestand dat we willen hernoemen en de tweede bevat de nieuwe naam van het bestand, zodra we aan deze voorwaarden voldoen, moeten we de methode aanroepen hernoemNaar () over het bestaande bestandsobject heen en geef het het nieuwe object met de nieuwe naam door.
Laten we eens kijken naar de code die we nodig hebben om de hernoemingsbewerking op ons bestand uit te voeren:
java.io importeren *; java.io.Bestand importeren; public class RenameFiles {public static void main (String [] argv) gooit IOException {File FirstObject = new File ("NewFile.txt"); Bestand secondobject = nieuw bestand ("FileWithNewName.txt"); FirstObject.renameTo (SecondObject); }}
We importeren de corresponderende klassen en pakketten, hetzelfde als in het vorige voorbeeld.
Binnen de methode voornaamst () we gaan ons eerste object maken en we gaan de naam plaatsen van het bestand dat we in het vorige voorbeeld hadden gemaakt, in dit geval is het BestandNieuw.txt. Vervolgens maken we een tweede object met de nieuwe naam die we willen voor ons bestand, in het voorbeeld dat we hebben gekozen BestandMetNieuweNaam.txt.
Ten slotte passen we de methode toe op het eerste object hernoemNaar () en als argument of parameter geven we het het tweede object door dat de nieuwe naam voor ons bestand heeft. Laten we eens kijken hoe het eruit ziet op de console wanneer we onze code uitvoeren:
VERGROTEN
We merkten hoe de map veranderde en weerspiegelt nu ons nieuwe bestand in vergelijking met de uitvoering van het eerste voorbeeld van het maken van een bestand.Ten slotte zullen we de andere bewerking zien die vrij gebruikelijk is bij het werken met bestanden en dat is om te verwijderen, dit is misschien een van de eenvoudigste, omdat we alleen de naam van het bestand hoeven te weten, valideren dat het bestaat en dan doorgaan met verwijderen het met behulp van de methode verwijderen () waar we de naam van het betreffende bestand doorgeven. Laten we in de volgende code kijken hoe we dit bereiken:
java.io importeren *; java.io.Bestand importeren; openbare klasse DeleteFile {public static void main (String [] argv) {delete ('FileWithNewName.txt'); } public static void delete (String filenameDelete) {probeer {File file = new File (filenameDelete); if (! file.exists ()) {System.err.println ("Het bestand" + bestandsnaamVerwijderen + "bestaat niet in deze map"); opbrengst; } if (file.delete ()) System.err.println ("** Het bestand" + bestandsnaamVerwijderen + "is verwijderd **"); else System.err.println ("Kon bestand niet verwijderen:" + bestandsnaamVerwijderen); } catch (SecurityException e) {System.err.println ("Kan bestand niet verwijderen:" + DeleteFileName + "(" + e.getMessage () + ")"); }}}
We zien dat dit programma iets uitgebreider is dan de vorige, dit komt omdat we een herbruikbare functie Voor het verwijderen van bestanden, waarbij we eerst valideren dat het bestand bestaat, gaan we verder met het verwijderen, hier valideren we dat het inderdaad is verwijderd, anders informeren we de gebruiker dat het bestand niet uit het bestandssysteem kan worden verwijderd.
In de console kunnen we zien hoe we deze bewerking met succes hebben kunnen uitvoeren, hiervoor gebruiken we het bestand dat we in het vorige voorbeeld hadden hernoemd, dus wanneer we een lijst maken van de inhoud van de map, zien we de wijziging weerspiegeld:
VERGROTEN
Ten slotte gaan we proberen opnieuw te verwijderen, zodat we kunnen zien dat de validaties werken:VERGROTEN
Hiermee beëindigen we deze tutorial, we hebben geleerd om bestanden te genereren, naast het uitvoeren van twee van de meest gebruikte acties voor bestandsmanipulatie, hiermee kunnen we deze technieken opnemen in onze programma's en applicaties, genietend van de voordelen die dit soort technieken u ons kan brengen.