Як додати текст до наявного файлу на Java


Відповіді:


793

Ви робите це для ведення журналу? Якщо так, для цього є кілька бібліотек . Два найпопулярніших - Log4j та Logback .

Java 7+

Якщо вам потрібно зробити це один раз, клас Files робить це легко:

try {
    Files.write(Paths.get("myfile.txt"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
    //exception handling left as an exercise for the reader
}

Обережно : Наведений вище підхід призведе до NoSuchFileExceptionтого, що файл ще не існує. Він також не додає новий рядок автоматично (що вам часто потрібно, додаючи до текстового файлу). Відповідь Стіва Чемберса висвітлює, як ви могли це зробити з Filesкласом.

Однак якщо ви будете писати в один і той же файл багато разів, вищезазначене має багато разів відкривати і закривати файл на диску, що є повільною роботою. У такому випадку краще захищений письменник:

try(FileWriter fw = new FileWriter("myfile.txt", true);
    BufferedWriter bw = new BufferedWriter(fw);
    PrintWriter out = new PrintWriter(bw))
{
    out.println("the text");
    //more code
    out.println("more text");
    //more code
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}

Примітки:

  • Другий параметр FileWriterконструктору підкаже, що він повинен додавати файл, а не писати новий файл. (Якщо файл не існує, він буде створений.)
  • Використання a BufferedWriterрекомендується для дорогого письменника (наприклад, FileWriter).
  • Використання PrintWriterдає вам доступ до printlnсинтаксису, до якого ви, ймовірно, звиклиSystem.out .
  • Але BufferedWriterі PrintWriterобгортки суворо не потрібні.

Старіша Java

try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
    out.println("the text");
    out.close();
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}

Обробка винятків

Якщо вам потрібна надійна обробка винятків для старої Java, вона стає дуже багатослівною:

FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter out = null;
try {
    fw = new FileWriter("myfile.txt", true);
    bw = new BufferedWriter(fw);
    out = new PrintWriter(bw);
    out.println("the text");
    out.close();
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}
finally {
    try {
        if(out != null)
            out.close();
    } catch (IOException e) {
        //exception handling left as an exercise for the reader
    }
    try {
        if(bw != null)
            bw.close();
    } catch (IOException e) {
        //exception handling left as an exercise for the reader
    }
    try {
        if(fw != null)
            fw.close();
    } catch (IOException e) {
        //exception handling left as an exercise for the reader
    }
}

31
Вам слід або скористатися пробними ресурсами java7, або поставити закриття () в остаточному блоці, щоб переконатися, що файл закритий у разі винятку
Світлін Зарев

1
оновлено синтаксисом Java 7. Обробка винятків як і раніше залишається вправою для читача, але зробила коментар зрозумілішим.
Кіп

3
Давайте уявимо, що new BufferedWriter(...)кидає виняток; Чи FileWriterзакриють? Я думаю, що він не буде закритий, тому що close()метод (у звичайних умовах) буде викликаний на outоб'єкт, який в даному випадку не буде ініціалізований - тому власне close()метод не буде викликаний -> файл буде відкритий, але не буде закрито. Тож tryзаява ІМХО має виглядати так. try(FileWriter fw = new FileWriter("myFile.txt")){ Print writer = new ....//code goes here } І він повинен flush()письменникові перед виходом з tryблоку !!!
Світлін Зарев

5
Увага! Приклад "Старішої Java" не буде належним чином закривати потік, якщо виключення буде закинуто всередину блоку спробу.
Емілі Л.

1
Кілька можливих «хатчей» з методом Java 7: (1) Якщо файл уже не існує, StandardOpenOption.APPENDйого не створюватимуть - на зразок мовчазного відмови, оскільки він також не викине виключення. (2) Використання .getBytes()означатиме, що немає зворотного символу до або після доданого тексту. Додамо альтернативну відповідь на їх вирішення.
Стів Чемберс

166

Ви можете використовувати fileWriterпрапор, встановлений на true, для додавання.

try
{
    String filename= "MyFile.txt";
    FileWriter fw = new FileWriter(filename,true); //the true will append the new data
    fw.write("add a line\n");//appends the string to the file
    fw.close();
}
catch(IOException ioe)
{
    System.err.println("IOException: " + ioe.getMessage());
}

9
closeслід розмістити в finallyблоці так, як показано у відповіді @ etech, якщо виняток буде перенесено між створенням FileWriter і викликом закриття.
Пшемо

5
Хороша відповідь, хоча краще використовувати System.getProperty ("line.separator") для нового рядка, а не "\ n".
Генрі Чжу

@Decoded Я відкрутив вашу редакцію на цю відповідь, оскільки вона не збирається.
Кіп

@Kip, в чому виникла проблема? Я, мабуть, вписав "друкарський помилок".
Розшифрований

2
Як боротися з пробними ресурсами? try(FileWriter fw = new FileWriter(filename,true)){ // Whatever }catch(IOException ex){ ex.printStackTrace(); }
php_coder_3809625

72

Чи не повинні всі відповіді, що містяться у блоках try / catch, мають .close () фрагменти, що містяться в остаточному блоці?

Приклад для позначеної відповіді:

PrintWriter out = null;
try {
    out = new PrintWriter(new BufferedWriter(new FileWriter("writePath", true)));
    out.println("the text");
} catch (IOException e) {
    System.err.println(e);
} finally {
    if (out != null) {
        out.close();
    }
} 

Також, як і в Java 7, ви можете використовувати оператор спробування ресурсів . Остаточний блок не потрібен для закриття оголошених ресурсів, оскільки він обробляється автоматично, а також є менш дослідним:

try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("writePath", true)))) {
    out.println("the text");
} catch (IOException e) {
    System.err.println(e);
}

1
Коли він outвиходить за межі, він автоматично закривається, коли він збирає сміття, правда? У вашому прикладі з finallyблоком, я думаю, вам насправді потрібен ще один вкладений спробу / ловити, out.close()якщо я правильно пам’ятаю. Рішення Java 7 досить гладке! (Я не займався Java-розробником з Java 6, тому я не був знайомий з цією зміною.)
Kip

1
@Kip Nope, вихід у рамки Яви нічого не робить. Файл закриється в якийсь випадковий час у майбутньому. (ймовірно, коли програма закриється)
Navin,

@etech Чи потрібен буде другий підхід flushметоду?
сифантид

43

Редагувати - станом на Apache Commons 2.1, правильний спосіб це зробити:

FileUtils.writeStringToFile(file, "String to append", true);

Я адаптував рішення @ Kip, щоб нарешті належним чином закрити файл:

public static void appendToFile(String targetFile, String s) throws IOException {
    appendToFile(new File(targetFile), s);
}

public static void appendToFile(File targetFile, String s) throws IOException {
    PrintWriter out = null;
    try {
        out = new PrintWriter(new BufferedWriter(new FileWriter(targetFile, true)));
        out.println(s);
    } finally {
        if (out != null) {
            out.close();
        }
    }
}


5
О, дякую тобі. Мене розвеселила складність усіх інших відповідей. Мені реально не зрозуміти, чому людям подобається ускладнювати своє (розробницьке) життя.
Альфаа

Проблема такого підходу полягає в тому, що він щоразу відкриває і закриває вихідний потік. Залежно від того, що і як часто ви пишете у свій файл, це може спричинити смішні накладні витрати.
Буффало

@Buffalo має рацію. Але ви завжди можете використовувати StringBuilder для створення великих фрагментів (які варто написати), перш ніж писати їх у файл.
Костянтин К

32

Щоб трохи розширити відповідь Кіпа , ось простий метод Java 7+, щоб додати новий файл до файлу, створивши його, якщо він ще не існує :

try {
    final Path path = Paths.get("path/to/filename.txt");
    Files.write(path, Arrays.asList("New line to append"), StandardCharsets.UTF_8,
        Files.exists(path) ? StandardOpenOption.APPEND : StandardOpenOption.CREATE);
} catch (final IOException ioe) {
    // Add your own exception handling...
}

Примітка . Вищезазначене використовує Files.writeперевантаження, яка записує рядки тексту у файл (тобто аналогічно printlnкоманді). Щоб просто написати текст до кінця (тобто аналогічно printкоманді), Files.writeможна використовувати альтернативне перевантаження, передаючи в байтовий масив (наприклад "mytext".getBytes(StandardCharsets.UTF_8)).


Чи потрібно перевірити, чи файл існує? Я думав, що .CREATEробить це за тебе.
LearningToJava

22

Переконайтесь, що потік належним чином закритий у всіх сценаріях.

Це трохи тривожно, скільки цих відповідей залишають відкриту ручку файлу у випадку помилки. Відповідь https://stackoverflow.com/a/15053443/2498188 - на гроші, але тільки тому, що BufferedWriter()не можуть кинути. Якби це могло, виняток залишив би FileWriterоб'єкт відкритим.

Більш загальний спосіб зробити це, не важливо, чи BufferedWriter()можна кинути:

  PrintWriter out = null;
  BufferedWriter bw = null;
  FileWriter fw = null;
  try{
     fw = new FileWriter("outfilename", true);
     bw = new BufferedWriter(fw);
     out = new PrintWriter(bw);
     out.println("the text");
  }
  catch( IOException e ){
     // File writing/opening failed at some stage.
  }
  finally{
     try{
        if( out != null ){
           out.close(); // Will close bw and fw too
        }
        else if( bw != null ){
           bw.close(); // Will close fw too
        }
        else if( fw != null ){
           fw.close();
        }
        else{
           // Oh boy did it fail hard! :3
        }
     }
     catch( IOException e ){
        // Closing the file writers failed for some obscure reason
     }
  }

Редагувати:

Що стосується Java 7, рекомендованим способом є використання "спробувати ресурси" та дозволити JVM впоратися з цим:

  try(    FileWriter fw = new FileWriter("outfilename", true);
          BufferedWriter bw = new BufferedWriter(fw);
          PrintWriter out = new PrintWriter(bw)){
     out.println("the text");
  }  
  catch( IOException e ){
      // File writing/opening failed at some stage.
  }

+1 для правильної ARM з Java 7. Ось хороший запитання щодо цієї хитрої теми: stackoverflow.com/questions/12552863/… .
Вадим

1
Хм, чомусь PrintWriter.close()не декларується як throws IOExceptionу документах . Дивлячись на його джерело , close()метод, дійсно, не може кинути IOException, тому що він ловить його з нижнього потоку і встановлює прапор. Тож якщо ви працюєте над кодом для наступного космічного шатла або рентгенівської системи вимірювання дози, вам слід скористатися PrintWriter.checkError()після спроби out.close(). Це справді мало бути задокументовано.
Євгеній Сергєєв

Якщо ми будемо супер параноїчні щодо закриття, кожен із них XX.close()повинен бути власним спробувати / ловити, правда? Наприклад, out.close()може викинути виняток, в цьому випадку bw.close()і fw.close()ніколи б не додзвонилися, і fwце той , який є найбільш важливим для закриття.
Кіп

13

У Java-7 це також можна зробити так:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

// ---------------------

Path filePath = Paths.get("someFile.txt");
if (!Files.exists(filePath)) {
    Files.createFile(filePath);
}
Files.write(filePath, "Text to be added".getBytes(), StandardOpenOption.APPEND);

2
Для чого потрібен імпорт? У якій бібліотеці використовуються ці речі?
Chetan Bhasin

9

java 7+

На мою скромну думку, оскільки я фанат простої Java, я б запропонував щось таке, що це поєднання вищезгаданих відповідей. Можливо, я спізнююсь на вечірку. Ось код:

 String sampleText = "test" +  System.getProperty("line.separator");
 Files.write(Paths.get(filePath), sampleText.getBytes(StandardCharsets.UTF_8), 
 StandardOpenOption.CREATE, StandardOpenOption.APPEND);

Якщо файл не існує, він створює його, і якщо він вже існує, він додає sampleText до існуючого файлу. Використовуючи це, ви позбавляєте вас від додавання зайвих ліб на ваш класний шлях.


8

Це можна зробити в одному рядку коду. Сподіваюся, це допомагає :)

Files.write(Paths.get(fileName), msg.getBytes(), StandardOpenOption.APPEND);

1
його може бути недостатньо :) кращою версією є Files.write (Paths.get (fileName), msg.getBytes (), StandardOpenOption.APPEND, StandardOpenOption.CREATE);
evg345

6

Використання java.nio. Файли разом з java.nio.file. StandardOpenOption

    PrintWriter out = null;
    BufferedWriter bufWriter;

    try{
        bufWriter =
            Files.newBufferedWriter(
                Paths.get("log.txt"),
                Charset.forName("UTF8"),
                StandardOpenOption.WRITE, 
                StandardOpenOption.APPEND,
                StandardOpenOption.CREATE);
        out = new PrintWriter(bufWriter, true);
    }catch(IOException e){
        //Oh, no! Failed to create PrintWriter
    }

    //After successful creation of PrintWriter
    out.println("Text to be appended");

    //After done writing, remember to close!
    out.close();

Це створює BufferedWriterвикористання файлів, які приймають StandardOpenOptionпараметри, і автоматичне змивання PrintWriterвід результату BufferedWriter. PrintWriter«S println()метод, то можна назвати для запису в файл.

У StandardOpenOptionпараметри , які використовуються в цьому коді: відкриває файл для запису, тільки додає до файлу, і створює файл , якщо він не існує.

Paths.get("path here")можна замінити на new File("path here").toPath(). І Charset.forName("charset name")може бути модифікований для розміщення бажаного Charset.


5

Я просто додаю невелику деталь:

    new FileWriter("outfilename", true)

2.nd параметр (true) - це функція (або інтерфейс), яка називається доданою ( http://docs.oracle.com/javase/7/docs/api/java/lang/Appendable.html ). Він несе відповідальність за можливість додати деякий вміст до кінця певного файлу / потоку. Цей інтерфейс реалізований з Java 1.5. Кожен об'єкт (наприклад, BufferedWriter, CharArrayWriter, CharBuffer, FileWriter, FilterWriter, LogStream, OutputStreamWriter, PipedWriter, PrintStream, PrintWriter, StringBuffer, StringBuilder, StringWriter, Writer ) може використовуватись для додавання вмісту

Іншими словами, ви можете додати деякий вміст у свій gzipped файл чи якийсь процес http


4

Зразок за допомогою Guava:

File to = new File("C:/test/test.csv");

for (int i = 0; i < 42; i++) {
    CharSequence from = "some string" + i + "\n";
    Files.append(from, to, Charsets.UTF_8);
}

13
Це жахлива порада. Ви відкриваєте потік до файлу 42 рази замість одного разу.
xehpuk

3
@xehpuk добре, це залежить. 42 все ще гаразд, якщо він робить код набагато більш читабельним. 42k не було б прийнятним.
dantuch

4

Спробуйте з bufferFileWriter.append, він працює зі мною.

FileWriter fileWriter;
try {
    fileWriter = new FileWriter(file,true);
    BufferedWriter bufferFileWriter = new BufferedWriter(fileWriter);
    bufferFileWriter.append(obj.toJSONString());
    bufferFileWriter.newLine();
    bufferFileWriter.close();
} catch (IOException ex) {
    Logger.getLogger(JsonTest.class.getName()).log(Level.SEVERE, null, ex);
}

що тут obj.toJSONString ()?
Bhaskara Arani

@BhaskaraArani Це просто рядок, він наводив приклад об'єкта JSON, перетвореного на рядок, але ідея полягає в тому, що це може бути будь-який рядок.
Gherbi Hicham

3
    String str;
    String path = "C:/Users/...the path..../iin.txt"; // you can input also..i created this way :P

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    PrintWriter pw = new PrintWriter(new FileWriter(path, true));

    try 
    {
       while(true)
        {
            System.out.println("Enter the text : ");
            str = br.readLine();
            if(str.equalsIgnoreCase("exit"))
                break;
            else
                pw.println(str);
        }
    } 
    catch (Exception e) 
    {
        //oh noes!
    }
    finally
    {
        pw.close();         
    }

це зробить те, що ви плануєте ..


3

Краще використовувати тест-ресурси, а потім все, що раніше, перш ніж ява 7

static void appendStringToFile(Path file, String s) throws IOException  {
    try (BufferedWriter out = Files.newBufferedWriter(file, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
        out.append(s);
        out.newLine();
    }
}

3

Якщо ми використовуємо Java 7 і вище, а також знаємо вміст, який потрібно додати (додавати) до файлу, ми можемо скористатися методом newBufferedWriter у пакеті NIO.

public static void main(String[] args) {
    Path FILE_PATH = Paths.get("C:/temp", "temp.txt");
    String text = "\n Welcome to Java 8";

    //Writing to the file temp.txt
    try (BufferedWriter writer = Files.newBufferedWriter(FILE_PATH, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
        writer.write(text);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Є кілька моментів, які слід зазначити:

  1. Завжди корисно вказувати кодування шаблонів, і для цього ми постійно в класі StandardCharsets.
  2. У коді використовується try-with-resourceоператор, в якому ресурси автоматично закриваються після спроби.

Хоча OP не запитує, але на всякий випадок, якщо ми хочемо шукати рядки, які мають певне ключове слово, наприклад, confidentialми можемо використовувати API потоку на Java:

//Reading from the file the first line which contains word "confidential"
try {
    Stream<String> lines = Files.lines(FILE_PATH);
    Optional<String> containsJava = lines.filter(l->l.contains("confidential")).findFirst();
    if(containsJava.isPresent()){
        System.out.println(containsJava.get());
    }
} catch (IOException e) {
    e.printStackTrace();
}

застереження: якщо ви користуєтеся BufferedWriter, write(String string)якщо очікуєте нового рядка після кожного написаного рядка, його newLine()слід викликати
yongtw123

3
FileOutputStream fos = new FileOutputStream("File_Name", true);
fos.write(data);

true дозволяє додавати дані в існуючий файл. Якщо ми напишемо

FileOutputStream fos = new FileOutputStream("File_Name");

Це замінить існуючий файл. Тому переходьте до першого підходу.


3
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Writer {


    public static void main(String args[]){
        doWrite("output.txt","Content to be appended to file");
    }

    public static void doWrite(String filePath,String contentToBeAppended){

       try(
            FileWriter fw = new FileWriter(filePath, true);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter out = new PrintWriter(bw)
          )
          {
            out.println(contentToBeAppended);
          }  
        catch( IOException e ){
        // File writing/opening failed at some stage.
        }

    }

}

Сказане - лише короткий приклад реалізації рішення, представленого за цим посиланням . Таким чином, ви можете скопіювати та запустити код та одразу побачити, як він працює, переконайтеся, що файл output.out знаходиться в тому ж каталозі, що і файл Writer.java
Девід Чарльз

2
FileOutputStream stream = new FileOutputStream(path, true);
try {

    stream.write(

        string.getBytes("UTF-8") // Choose your encoding.

    );

} finally {
    stream.close();
}

Потім ловіть IOException десь вище за течією.


2

Створіть функцію в будь-якому місці свого проекту та просто зателефонуйте до цієї функції там, де вона вам потрібна.

Хлопці, ви повинні пам’ятати, що ви, хлопці, називаєте активні теми, які ви не закликаєте асинхронно, і оскільки, швидше за все, це буде добре 5–10 сторінок, щоб зробити це правильно. Чому б не витратити більше часу на свій проект і не забути написати щось вже написане. Правильно

    //Adding a static modifier would make this accessible anywhere in your app

    public Logger getLogger()
    {
       return java.util.logging.Logger.getLogger("MyLogFileName");
    }
    //call the method anywhere and append what you want to log 
    //Logger class will take care of putting timestamps for you
    //plus the are ansychronously done so more of the 
    //processing power will go into your application

    //from inside a function body in the same class ...{...

    getLogger().log(Level.INFO,"the text you want to append");

    ...}...
    /*********log file resides in server root log files********/

три рядки коду два насправді з третього фактично додає текст. : P


2

Бібліотека

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

Код

public void append()
{
    try
    {
        String path = "D:/sample.txt";

        File file = new File(path);

        FileWriter fileWriter = new FileWriter(file,true);

        BufferedWriter bufferFileWriter  = new BufferedWriter(fileWriter);

        fileWriter.append("Sample text in the file to append");

        bufferFileWriter.close();

        System.out.println("User Registration Completed");

    }catch(Exception ex)
    {
        System.out.println(ex);
    }
}

2

Ви також можете спробувати це:

JFileChooser c= new JFileChooser();
c.showOpenDialog(c);
File write_file = c.getSelectedFile();
String Content = "Writing into file"; //what u would like to append to the file



try 
{
    RandomAccessFile raf = new RandomAccessFile(write_file, "rw");
    long length = raf.length();
    //System.out.println(length);
    raf.setLength(length + 1); //+ (integer value) for spacing
    raf.seek(raf.length());
    raf.writeBytes(Content);
    raf.close();
} 
catch (Exception e) {
    //any exception handling method of ur choice
}

1

Я можу запропонувати проект apache commons . Цей проект вже пропонує рамки для того, що потрібно (тобто гнучка фільтрація колекцій).


1

Наступний метод дозволить вам додати текст до якогось файлу:

private void appendToFile(String filePath, String text)
{
    PrintWriter fileWriter = null;

    try
    {
        fileWriter = new PrintWriter(new BufferedWriter(new FileWriter(
                filePath, true)));

        fileWriter.println(text);
    } catch (IOException ioException)
    {
        ioException.printStackTrace();
    } finally
    {
        if (fileWriter != null)
        {
            fileWriter.close();
        }
    }
}

Крім того, використовуючи FileUtils:

public static void appendToFile(String filePath, String text) throws IOException
{
    File file = new File(filePath);

    if(!file.exists())
    {
        file.createNewFile();
    }

    String fileContents = FileUtils.readFileToString(file);

    if(file.length() != 0)
    {
        fileContents = fileContents.concat(System.lineSeparator());
    }

    fileContents = fileContents.concat(text);

    FileUtils.writeStringToFile(file, fileContents);
}

Це не ефективно, але працює чудово. Розриви рядків обробляються правильно та створюється новий файл, якщо такого ще не існувало.



1

Якщо ви хочете ДОДАТИ ДЕЯКИЙ ТЕКСТ У СПЕЦИФІЧНИХ ЛІНях, спочатку ви можете прочитати весь файл, додати текст куди завгодно, а потім перезаписати все, як у наведеному нижче коді:

public static void addDatatoFile(String data1, String data2){


    String fullPath = "/home/user/dir/file.csv";

    File dir = new File(fullPath);
    List<String> l = new LinkedList<String>();

    try (BufferedReader br = new BufferedReader(new FileReader(dir))) {
        String line;
        int count = 0;

        while ((line = br.readLine()) != null) {
            if(count == 1){
                //add data at the end of second line                    
                line += data1;
            }else if(count == 2){
                //add other data at the end of third line
                line += data2;
            }
            l.add(line);
            count++;
        }
        br.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }       
    createFileFromList(l, dir);
}

public static void createFileFromList(List<String> list, File f){

    PrintWriter writer;
    try {
        writer = new PrintWriter(f, "UTF-8");
        for (String d : list) {
            writer.println(d.toString());
        }
        writer.close();             
    } catch (FileNotFoundException | UnsupportedEncodingException e) {
        e.printStackTrace();
    }
}

0

Моя відповідь:

JFileChooser chooser= new JFileChooser();
chooser.showOpenDialog(chooser);
File file = chooser.getSelectedFile();
String Content = "What you want to append to file";

try 
{
    RandomAccessFile random = new RandomAccessFile(file, "rw");
    long length = random.length();
    random.setLength(length + 1);
    random.seek(random.length());
    random.writeBytes(Content);
    random.close();
} 
catch (Exception exception) {
    //exception handling
}

0
/**********************************************************************
 * it will write content to a specified  file
 * 
 * @param keyString
 * @throws IOException
 *********************************************************************/
public static void writeToFile(String keyString,String textFilePAth) throws IOException {
    // For output to file
    File a = new File(textFilePAth);

    if (!a.exists()) {
        a.createNewFile();
    }
    FileWriter fw = new FileWriter(a.getAbsoluteFile(), true);
    BufferedWriter bw = new BufferedWriter(fw);
    bw.append(keyString);
    bw.newLine();
    bw.close();
}// end of writeToFile()

-1

Ви можете використати наступний код, щоб додати вміст у файл:

 String fileName="/home/shriram/Desktop/Images/"+"test.txt";
  FileWriter fw=new FileWriter(fileName,true);    
  fw.write("here will be you content to insert or append in file");    
  fw.close(); 
  FileWriter fw1=new FileWriter(fileName,true);    
 fw1.write("another content will be here to be append in the same file");    
 fw1.close(); 

-1

1.7 Підхід:

void appendToFile(String filePath, String content) throws IOException{

    Path path = Paths.get(filePath);

    try (BufferedWriter writer = 
            Files.newBufferedWriter(path, 
                    StandardOpenOption.APPEND)) {
        writer.newLine();
        writer.append(content);
    }

    /*
    //Alternative:
    try (BufferedWriter bWriter = 
            Files.newBufferedWriter(path, 
                    StandardOpenOption.WRITE, StandardOpenOption.APPEND);
            PrintWriter pWriter = new PrintWriter(bWriter)
            ) {
        pWriter.println();//to have println() style instead of newLine();   
        pWriter.append(content);//Also, bWriter.append(content);
    }*/
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.