2014-02-08 1 views
-1

Это только запись «test 2» в текстовом файле. Как написать первую строку будет «test 1», а вторая строка будет «test 2» в текстовом файле. КлассСтрока заказа на запись в текстовый файл

if(s1.equals("test 1")&&s2.equals("test 2")){ 
       WriteNameOrderInFile.nameOfFirstOrderForImage(s1); 
       WriteNameOrderInFile.nameOfSecondOrderForImage(s2); 

WriteNameOrderInFile:

public class WriteNameOrderInFile(){ 

    public static void nameOfFirstOrder(String s) throws IOException { 
    String nameFileDoctor="C:/append info.txt"; 
    FileOutputStream fos = new FileOutputStream(nameFileDoctor); 
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); 
    bw.write(s); 
    bw.newLine(); 
    bw.flush(); 
    bw.close(); 


} 

    public static void nameOfSecondOrder(String s) throws IOException { 
    File file= new File("C:/append info.txt"); 

     FileOutputStream fos2= new FileOutputStream(file,true); 
     BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos2)); 
     bw.write(s); 
     bw.newLine(); 
     bw.flush(); 
     bw.close(); 

    } 
+1

В чем проблема? Какие-либо исключения у вас есть? Я пробовал свой код, и он работает для меня (после вызова обеих функций в новом основном классе). Возможно, вам нужно вызвать правильные функции 'nameOfFirstOrder' и' nameOfSecondOrder'? Просьба представить полный пример рабочего кода. – bobbel

+0

Мне очень жаль, вы правы, я назвал неправильный метод. Мой разум сумасшедший. Извини за это. –

ответ

2

Даже если решение только вызвать правильные методы, вот некоторые улучшения для вашего кода:

public class WriteNameOrderInFile { 
    public static void writeToFile(String text, boolean append) { 
     File file = new File("C:/append info.txt"); 

     try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, append))) { 
      bw.write(text); 
      bw.newLine(); 
     } catch (IOException e) { 
      // do some exception handling 
      System.err.println("Can't write to file!"); 
     } 
    } 

    public static void main(String[] args) { 
     // just a sample call with the code you provided 
     String s1 = "test 1"; 
     String s2 = "test 2"; 

     if (s1.equals("test 1") && s2.equals("test 2")) { 
      writeToFile(s1, false); // boolean is false, so write (replace) text 
      writeToFile(s2, true); // append is true, so append text 
     } 
    } 
} 

Некоторые пояснения к улучшения кода:

  • Ваши два метода отличаются только от , написав текст в файл и добавив текст в файл. Таким образом, рассмотреть возможность использования одного метода writeToFile и дать ему Append -boolean
  • Вместо того, чтобы OutputStreamWriter и FileOutputStream рассмотреть возможность использования FileWriter
  • Если вы используете Java с версией> = 7, использовать примерочный с-ресурсом заявления. Вы можете легко избавиться от попыток закрыть потоки в хорошей манере.
  • BufferedWriter.flush() также не требуется, так как это будет сделано при закрытии файла (что сделано заявление примерочных с-ресурса)
+0

Благодарим за улучшение –