Как написать текстовый файл Java - программирование
Подтвердить что ты не робот

Как написать текстовый файл Java

Следующий код не создает файл (я не вижу файл в любом месте). Что не хватает?

try {
    //create a temporary file
    String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(
        Calendar.getInstance().getTime());
    File logFile=new File(timeLog);

    BufferedWriter writer = new BufferedWriter(new FileWriter(logFile));
    writer.write (string);

    //Close writer
    writer.close();
} catch(Exception e) {
    e.printStackTrace();
}
4b9b3361

Ответ 1

Я думаю, что ваши ожидания и реальность не совпадают (но когда они когда-либо;))

В принципе, если вы думаете, что файл написан и где файл на самом деле написан, не равны (hmmm, возможно, я должен написать инструкцию if;))

public class TestWriteFile {

    public static void main(String[] args) {
        BufferedWriter writer = null;
        try {
            //create a temporary file
            String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
            File logFile = new File(timeLog);

            // This will output the full path where the file will be written to...
            System.out.println(logFile.getCanonicalPath());

            writer = new BufferedWriter(new FileWriter(logFile));
            writer.write("Hello world!");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // Close the writer regardless of what happens...
                writer.close();
            } catch (Exception e) {
            }
        }
    }
}

Также обратите внимание, что ваш пример перезапишет любые существующие файлы. Если вы хотите добавить текст в файл, вы должны сделать следующее:

writer = new BufferedWriter(new FileWriter(logFile, true));

Ответ 2

Я хотел бы добавить немного больше в ответ MadProgrammer.

В случае многострочной записи при выполнении команды

writer.write(string);

можно заметить, что символы новой строки опущены или пропущены в записанном файле, даже если они появляются во время отладки или если один и тот же текст печатается на терминале с помощью

System.out.println("\n");

Таким образом, весь текст появляется как один большой фрагмент текста, который нежелателен в большинстве случаев. Символ новой строки может зависеть от платформы, поэтому лучше получить этот символ из свойств системы java, используя

String newline = System.getProperty("line.separator");

а затем используя переменную новой строки вместо "\n". Это даст результат так, как вы хотите.

Ответ 3

В java 7 теперь можно сделать

try(BufferedWriter w = ....)
{
  w.write(...);
}
catch(IOException)
{
}

и w.close будет выполнено автоматически

Ответ 4

Он не создает файл, потому что вы никогда не создали файл. Вы сделали для этого объект. Создание экземпляра не создает файл.

File newFile = new File("directory", "fileName.txt");

Вы можете сделать это, чтобы создать файл:

newFile.createNewFile();

Вы можете сделать это, чтобы создать папку:

newFile.mkdir();

Ответ 5

Вы можете попробовать Java-библиотеку. FileUtils, у него есть много функций, которые записываются в файлы.

Ответ 6

Он работает со мной. Убедитесь, что вы добавили ".txt" рядом с timeLog. Я использовал его в простой программе, открытой с помощью Netbeans, и он записывает программу в основную папку (где находятся папки builder и src).

Ответ 7

Использование java 8 LocalDateTime и java 7 try-with оператора:

public class WriteFile {

    public static void main(String[] args) {

        String timeLog = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss").format(LocalDateTime.now());
        File logFile = new File(timeLog);

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(logFile))) 
        {
            System.out.println("File was written to: "  + logFile.getCanonicalPath());
            bw.write("Hello world!");
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
}

Ответ 8

Самый простой способ для меня просто так:

            try {
                FileWriter writer = new FileWriter("C:/Your/Absolute/Path/YourFile.txt");
                writer.write("Wow, this is so easy!");
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

Полезные советы & фокусы:

  • Дайте ему определенный путь:

    новый FileWriter ("C: /Your/Absolute/Path/YourFile.txt");

  • Новая строка

    writer.write( "\ г\п");

  • Добавить строки в существующий текст

    новый FileWriter ("log.txt");

Надеюсь, что это работает!