2014-02-08 49 views
-1

这只是在文本文件中写入“test 2”。 如何写第一行是“测试1”,第二行是文本文件中的“测试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 
     } 
    } 
} 

几点说明的代码改进:

  • 您的两种方法只有在文本写入文件和文本附加到文件上才有所不同。所以,如果你使用的是Java与版本> = 7考虑使用一种方法writeToFile,并给它一个追加 -boolean
  • 代替OutputStreamWriterFileOutputStream考虑使用FileWriter
  • ,使用try-与资源的语句。您可以轻松摆脱尝试以良好方式关闭流。
  • BufferedWriter.flush()也是需要的,因为它会在关闭文件(什么是试戴与资源语句来完成的)
+0

谢谢你的改进 –