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