将字符串输出解析为文件

时间:2011-12-13 02:41:29

标签: java android string split

这个“Frankenstein-ed”Java的第一部分工作得很好,但是第二部分输出了一些混乱的废话。因此结果变量将是我对用户的输入。在我解决某些愚蠢的原因之前,我必须首先使用UpperCase字符串,当你来自数据库/分析背景并且知道你在几秒钟内做了一些事情并且没有得到错误时很难...我给了信用到期在代码中...

myfile.txt ---> [Ljava.lang.String; @ 19821f

  import java.io.*;
/*http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29*/

  public class StringParser {

  public static void main (String arg[])
     throws FileNotFoundException {
String result = "eggs toast bacon bacon butter ice beer".toUpperCase();
  String[] resultU = result.split("\\s");
  String[] y = resultU;

  {
for (int x=0; x< resultU.length; x++)



    System.out.println(resultU[x]);


  /*http://www.javacoffeebreak.com/java103/java103.html#output*/

            FileOutputStream out; // declare a file output object
            PrintStream p; // declare a print stream object

            try
            {
                    // Create a new file output stream
                    // connected to "myfile.txt"
                    out = new FileOutputStream("myfile.txt");

                    // Connect print stream to the output stream
                    p = new PrintStream( out );

                    p.println (resultU);

                    p.close();
            }
            catch (Exception e)
            {
                    System.err.println ("Error writing to file");
            }
    }
}
}

4 个答案:

答案 0 :(得分:2)

你是否意识到你正在为数组中的每个元素覆盖相同的文件?

你应该使用

out = new FileOutputStream("myfile.txt", true); // appends to existing file

除了打印实际元素外,还不打印整个数组的String表示

p.println(resultU[x]);  // resultU without index prints the whole array - yuk!

虽然您可能应该更新代码以仅创建输出文件一次,然后将数组的每个元素写入相同的输出流,因为当前方法效率有点低。

这样的东西
public static void main(String[] args) {

    String result = "eggs toast bacon bacon butter ice beer".toUpperCase();

    PrintStream p = null;

    try {
        p = new PrintStream(new FileOutputStream("myfile.txt"));

        for (String s : result.split("\\s")) {
            p.println(s);
            p.flush(); // probably not necessary
        }

    } catch (Exception e) {
        e.printStackTrace(); // should really use a logger instead!
    } finally {
        try {
            p.close(); // wouldn't need this in Java 7!
        } catch (Exception e) {
        }
    }
}

答案 1 :(得分:0)

您必须迭代数组并逐个编写每个元素。

FileOutputStream out; // declare a file output object
  PrintStream p; // declare a print stream object
  try
   {
   out = new FileOutputStream("myfile.txt");
   p = new PrintStream( out );
   for(String str:resultU)
    {
        p.println (str);
     }
   p.close();
   }
   catch (Exception e)
   {
   System.err.println ("Error writing to file");
   }

答案 2 :(得分:0)

你的行

p.println (resultU);

正在打印数组本身的字符串表示形式,而不是其中的元素。要打印元素,您需要循环遍历数组并单独打印出来。当然,The Arrays class有一种方便的方法可以帮到你。

答案 3 :(得分:0)

“混乱的无意义”是记忆中String的位置,但现在这并不重要。

问题的解决方案是:

try {
  FileOutputStream out = new FileOutputStream("myfile.txt", true);
  PrintStream = new PrintStream(out);

  for(String s : resultU)
    p.println(s);

  p.close();
} catch(Exception e) {
  e.printStackTrace();
}

这将取代整个for循环。