Как использовать классы PrintWriter и File в Java?
Я пытаюсь понять PrintWriter для небольшой программы, которую я делаю, и я не могу заставить java сделать файл, а затем написать на нем. Когда я выполняю программу ниже, она дает мне ошибку Filenotfoundexeption в строке 9. Он также не может сделать файл в каталоге, который я указал. Я новичок в этом поэтому, пожалуйста, попробуйте и держать ответы простые. Я использую 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 ();
}
}
10 ответов
Если каталог не существует, вам нужно его создать. Java не будет создавать его сам по себе, так как File
class - это просто ссылка на сущность, которая также не может существовать вообще.
Как вы отметили ошибка что файл не может быть создан. Если Вы читаете документацию конструктора PrintWriter, вы можете увидеть
FileNotFoundException-если данная строка не обозначает существующий, доступный для записи обычный файл и новый обычный файл с этим именем не может быть создано, или если при открытии или создании файла возникает другая ошибка
вы должны попробовать создать путь к папке, которую он содержит до:
File file = new File("C:/Users/Me/Desktop/directory/file.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter = new PrintWriter(file);
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 ();
}
}
исключение для файла.
передайте объект File конструктору PrintWriter(File file)
:
PrintWriter printWriter = new PrintWriter(file);
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();
}
}
}
}
У вас должно быть четкое представление об исключениях в java. В java есть проверенные исключения и непроверенные исключения.
проверенные исключения проверяются (не выбрасываются,просто проверяются) компилятором во время компиляции для плавного выполнения программы во время выполнения.
примечание: и в нашей программе, если у них есть шанс, что проверенное исключение будет расти, то мы должны обрабатывать это проверенное исключение либо try catch, либо throws key word.В противном случае мы получим Ошибка времени компиляции:
CE: неожиданное исключение java.Ио.FileNotFoundException; должен быть пойман или объявлен брошенным.
Как решить: 1.Поместите свой код в блок try catch:
2.используйте ключевое слово throws, как показано другими ребятами выше.
совет:подробнее об исключениях.(Я лично люблю эту тему)
Java обычно не принимает " / " для использования при определении каталога файлов, поэтому попробуйте следующее:
File file = new File ("C:\Users\user\workspace\FileTester\myFile.txt");
Если файл не существует вообще:
try {
file.createNewFile();
}
catch (IOException e) {
e.printStackTrace();
}
Ну, я думаю, во-первых, держать весь основной в try catch (или вы можете использовать как public static void main(String arg[]) throws IOException )
а затем также использовать полный путь к файлу, в котором вы пишете как
PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt");
все эти directies, как пользователи,меня,рабочего стола,каталог должен быть пользователем. Ява не делает каталоги собственных собственных. это должно быть как
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();
}
}
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
}
}
на PrintWriter
класс может фактически создать файл для вас.
этот пример работает в 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();
для списка допустимых кодировок,см. документацию.
кроме того, вы можете просто передать путь к файлу PrintWriter
класс без объявления кодировки.
дважды щелкните file.txt
, затем сохранить его, command + s
, это сработало в моем случае. Кроме того, убедитесь, что file.txt
сохраняется в папке проекта.
Если это не сработает.
PrintWriter pw = new PrintWriter(new File("file.txt"));
pw.println("hello world"); // to test if it works.