使用Java写入文件

问题描述:

我正在尝试编写一个简单的方法将我的文档保存到文件中(覆盖此文件的任何以前的内容)。不幸的是,我的实现似乎不起作用。我在我的文档上调用它,这是为了所有意图和目的,一个String数组。我想要做的是编写我的数组的内容,为数组中的每个值分别设置一行,第一行的位置为[0],第二行为[1]。我将如何去做这件事?使用Java写入文件

这是我的执行至今:

public void save() 
    { 
     try 
     { 
     PrintWriter outputFile = 
      new PrintWriter(new BufferedWriter(new FileWriter(docName))); 
     int lineNo = 1; 

     while (lineNo != lineNo) // CHANGE THIS!!! 
     { outputFile.println(" ~ "); 
      lineNo++; 
     } 
     outputFile.flush(); 
     } 
     catch (Exception e) 
     { 
     System.out.println("Document: Touble writing to "+docName); 
     System.exit(1); 
     } 

}

+0

没有任何反应,也没有错误返回!这就是为什么我很困惑! :) – steveom 2011-02-26 18:22:04

+0

因为它永远不会进入while循环 - 'int lineNo = 1; while(lineNo!= lineNo)// always always FALSE' – Nishant 2011-02-26 18:23:57

+0

这是调试器很快显示给你的东西。 – 2011-02-26 18:36:30

遍历数组的迭代器,并写入当前元素。

String document[] = {"String1","String2","String3"}; 
    PrintWriter outputFile = 
     new PrintWriter(new BufferedWriter(new FileWriter(docName))); 
    int lineNo = 1; 

    for(int i = 0; i < document.length; i++) 
    { outputFile.println(document[i]); 
     lineNo++; 
    } 
+0

steveom 2011-02-26 18:24:42

如果a是一个字符串数组,

for (String s : a) 
    outputFile.println(s); 

将阵列行由行打印到outputFile

// myDoc is the "array of string" 
foreach (String line : myDoc) { 
    outputFile.println(line); 
} 

我可以写更是这样的:

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.PrintStream; 

/** 
* FileDemo 
* @author Michael 
* @since 2/26/11 
*/ 
public class FileDemo 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      FileDemo fd = new FileDemo(); 
      fd.save("out/test.txt", args); 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 

    } 

    public void save(String filePath, String [] lines) throws FileNotFoundException 
    { 
     PrintStream ps = null; 

     try 
     { 
      ps = new PrintStream(new FileOutputStream(filePath)); 
      int lineNum = 1; 
      for (String line : lines) 
      { 
       ps.printf("%5d %s\n", lineNum++, line); 
      } 
     } 
     finally 
     { 
      close(ps); 
     } 
    } 

    public static void close(PrintStream ps) 
    { 
     if (ps != null) 
     { 
      ps.flush(); 
      ps.close(); 
     } 
    } 
} 

我没有看到你的代码的任何实际内容,所以我加了一些。我没有看到带有行号的文件非常有趣。如果你愿意的话,你可以修改它以使它有所不同。