Hoe gebruik ik PrintWriter en File klassen in Java?

Ik probeer PrintWriter te begrijpen voor een klein programma dat ik maak, en het lukt me niet om Java het bestand te laten maken en er vervolgens op te schrijven. Wanneer ik het onderstaande programma uitvoer, krijg ik een Filenotfoundexeption-fout op regel 9. Het lukt ook niet om het bestand in de map te maken die ik heb opgegeven. Ik ben nieuw op dit gebied, dus probeer de antwoorden eenvoudig te houden. Ik gebruik Eclipse.

import java.io.PrintWriter;
import java.io.File;
public class Testing {
  public static void main(String[] args) {
    File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
    PrintWriter printWriter = new PrintWriter ("file.txt");
    printWriter.println ("hello");
    printWriter.close ();       
  }
}

Antwoord 1, autoriteit 100%

Als de map niet bestaat, moet u deze maken. Java maakt het niet zelf, aangezien de klasse Fileslechts een link is naar een entiteit die ook helemaal niet kan bestaan.

Zoals u zei, is de fout dat het bestand niet kan worden gemaakt. Als je de documentatie van de PrintWriter-constructor leest, kun je

FileNotFoundException – Als de opgegeven tekenreeks geen bestaand, beschrijfbaar regulier bestand aanduidt en er geen nieuw regulier bestand met die naam kan worden gemaakt, of als er een andere fout optreedt tijdens het openen of maken van het bestand

Probeer een pad te maken voor de map die het eerder bevat:

File file = new File("C:/Users/Me/Desktop/directory/file.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter = new PrintWriter(file);

Antwoord 2, autoriteit 16%

import java.io.PrintWriter;
import java.io.File;
public class Testing {
  public static void main(String[] args) throws IOException {
    File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
    PrintWriter printWriter = new PrintWriter ("file.txt");
    printWriter.println ("hello");
    printWriter.close ();       
  }
}

gooi een uitzondering voor het bestand.


Antwoord 3, autoriteit 7%

Geef het File-object door aan de constructor PrintWriter(File file):

PrintWriter printWriter = new PrintWriter(file);

Antwoord 4, autoriteit 5%

import java.io.File;
import java.io.PrintWriter;
public class Testing 
{
    public static void main(String[] args) 
    {
        File file = new File("C:/Users/Me/Desktop/directory/file.txt");
        PrintWriter printWriter = null;
        try
        {
            printWriter = new PrintWriter(file);
            printWriter.println("hello");
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        finally
        {
            if ( printWriter != null ) 
            {
                printWriter.close();
            }
        }
    }
}

Antwoord 5

U moet een duidelijk idee hebben van uitzonderingen in Java.
In Java zijn er aangevinkte uitzonderingen en niet-aangevinkte uitzonderingen.

Gecontroleerde uitzonderingen worden tijdens het compileren door de compiler gecontroleerd (niet gegooid, alleen gecontroleerd) voor een soepele uitvoering van het programma tijdens runtime.

OPMERKING: En als er in ons programma een kans is dat een gecontroleerde uitzondering zich voordoet, dan moeten we die gecontroleerde uitzondering afhandelen met try-catch of met het sleutelwoord ‘throws’. Anders krijgen we een compileerfout:

CE:Unexpected Exception java.io.FileNotFoundException;moet worden gevangen of verklaard om te worden gegooid.

Hoe op te lossen:
1.Plaats je code in try catch block:

2.use throws trefwoord zoals getoond door andere jongens hierboven.

Advies:Lees meer over Exceptions.(Persoonlijk vind ik dit onderwerp geweldig)


Antwoord 6

Java accepteert normaal gesproken geen “/” voor gebruik bij het definiëren van een bestandsmap, dus probeer dit:

File file = new File ("C:\\Users\\user\\workspace\\FileTester\\myFile.txt");

Als het bestand niet bestaat:

try {
      file.createNewFile();
 }
 catch (IOException e) {
 e.printStackTrace();
 }

Antwoord 7

Nou, ik denk dat eerst de hele main in try catch moet blijven (of je kunt gebruiken als public static void main(String arg[]) throws IOException )en gebruik dan ook het volledige pad van het bestand waarin je schrijven als

PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt");

al die directies zoals users,Me,Desktop,directory zouden user made moeten zijn. java maakt geen eigen directory’s.
het zou moeten zijn als

import java.io.*;
public class PrintWriterClass {
public static void main(String arg[]) throws IOException{
    PrintWriter pw = new PrintWriter("C:/Users/Me/Desktop/directory/file.txt");
    pw.println("hiiiiiii");
    pw.close();
}   
}

Antwoord 8

import java.io.*;
public class test{
    public static void main(Strings []args){
       PrintWriter pw = new PrintWriter(new file("C:/Users/Me/Desktop/directory/file.txt"));
       pw.println("hello");
       pw.close
    }

}


Antwoord 9

De klasse PrintWriterkan het bestand daadwerkelijk voor u maken.

Dit voorbeeld werkt in JDK 1.7+.

// This will create the file.txt in your working directory.
PrintWriter printWriter = null;
try {
    printWriter = new PrintWriter("file.txt", "UTF-8");
    // The second parameter determines the encoding. It can be
    // any valid encoding, but I used UTF-8 as an example.
} catch (FileNotFoundException | UnsupportedEncodingException error) {
    error.printStackTrace();
}
printWriter.println("Write whatever you like in your file.txt");
// Make sure to close the printWriter object otherwise nothing
// will be written to your file.txt and it will be blank.
printWriter.close();

Voor een lijst met geldige coderingen, zie de documentatie.

U kunt ook het bestandspad doorgeven aan de klasse PrintWriterzonder de codering aan te geven.


Antwoord 10

Dubbelklik op file.txten sla het op, command + s, dat werkte in mijn geval. Zorg er ook voor dat de file.txtis opgeslagen in de projectmap.
Als dat niet werkt.

PrintWriter pw = new PrintWriter(new File("file.txt"));
pw.println("hello world"); // to test if it works.

Antwoord 11

Als je PrintWrite wilt gebruiken, probeer dan deze code

public class PrintWriter {
    public static void main(String[] args) throws IOException {
        java.io.PrintWriter pw=new java.io.PrintWriter("file.txt");
        pw.println("hello world");
        pw.flush();
        pw.close();
    }
}

Other episodes