drach 发表于 2007-11-22 21:30

问个java生成创建文件的问题(问题解决一半了,但又出现新问题了)

请问如何将java 中println生成的内容复制创建到一个文件里?没接触过java,谢谢$汗$

可以生成文件存放println中的内容了,但问题是System.setOut(out)只截取一次控制台中的内容,只循环了一遍就中止了,有什么方法可以解决这个问题么....


   try{   
      File   test   =   new   File("e:\\test.txt");   
      PrintStream   out   =   new   PrintStream(new   FileOutputStream(test));   
      //System.setOut(out);
      
      System.out.println( "case:");
      System.out.println( token.getToken().toCharArray());
      System.out.println("---------------------------------");
   
      
      
      Enumeration en = h.keys();
      while(en.hasMoreElements())
   {
      Object o = en.nextElement();
      System.out.println("Char " + o + " Jump " + h.get(o) );
      }
      System.out.println("---------------------------------");
   
    }

      catch(Exception   e){}

[ 本帖最后由 drach 于 2007-11-23 16:29 编辑 ]

康猪 发表于 2007-11-22 22:50

common log or log4j

turtles 发表于 2007-11-23 01:54

如果我没有理解错误,你可以在Konsole启动的时候加上这个(main()在Test.java里):
java Test > Log.txt

就会把所有显示出来的字写到Log.txt了。如果要写到一个其它的文件夹也可以直接用Path比如 C:\Log\MeinLog.txt等等。

drach 发表于 2007-11-23 13:09

谢谢大家

主要是要把console的信息输出到文件里面

drach 发表于 2007-11-23 15:19

原帖由 康猪 于 2007-11-22 21:50 发表 http://www.dolc.de/forum/images/common/back.gif
common log or log4j
这个要自己修改log4j $考虑$

drach 发表于 2007-11-23 15:20

原帖由 ─壶酒 于 2007-11-23 00:44 发表 http://www.dolc.de/forum/images/common/back.gif
或者可以参考System.setOut(PrintStream out) 方法。


能详细说明下么,比如如何把println()输出的内容存到文件里$汗$

renzaijianghu 发表于 2007-11-24 12:41

啥叫只循环了一遍就中止了??catch(Exception   e){}有没有发生异常,如果有stacktrace是什么?还是文件本身结束了,还是....$考虑$ , 问题先要说清楚.

drach 发表于 2007-11-24 14:37

原帖由 renzaijianghu 于 2007-11-24 11:41 发表 http://www.dolc.de/forum/images/common/back.gif
啥叫只循环了一遍就中止了??catch(Exception   e){}有没有发生异常,如果有stacktrace是什么?还是文件本身结束了,还是....$考虑$ , 问题先要说清楚.

下面那个println是循环打印一组数据,这组数据和hashtabel的key关联,try catch没啥问题,只要注释掉system.setOut后程序就能正常运行了,如果加上system.setOut,让它截取数据流打印到文件上,下面的println就只显示第一组数据

康猪 发表于 2007-11-24 15:05

我觉得turtles
的命令挺好啊,难道一定要java

康猪 发表于 2007-11-24 15:10

不需要写代码
而且还可以追加
>>log.txt

renzaijianghu 发表于 2007-11-24 16:15

"如果加上system.setOut,让它截取数据流打印到文件上,下面的println就只显示第一组数据"$考虑$ ,你首先要明白,不管输出到什么地方,只要没出现异常,原来要输出的肯定还能正常输出, 要不就是输出到文件,要不就是到屏幕, 只显示一组,你必须打印堆栈,不能 catch(Exception   e){},象你这样,显然只能得到"try catch没啥问题"的结论. 我说的只不过是分析问题的一般方法,实际跟java没太大关系.

turtles 发表于 2007-11-24 16:45

原帖由 康猪 于 2007-11-24 14:10 发表 http://www.dolc.de/forum/images/common/back.gif
不需要写代码
而且还可以追加
>>log.txt 对阿,也建议LZ用这个,我在上面也提过。

康猪 发表于 2007-11-24 16:47

原帖由 turtles 于 2007-11-24 15:45 发表 http://www.dolc.de/forum/images/common/back.gif
对阿,也建议LZ用这个,我在上面也提过。

我说地就是你的办法呀:D

turtles 发表于 2007-11-24 17:21

原帖由 康猪 于 2007-11-24 15:47 发表 http://www.dolc.de/forum/images/common/back.gif


我说地就是你的办法呀:D 是阿:D 不过还是有一点点区别的。我用>log.txt,你用 >>log.txt

>log.txt: 把老的删除,全部重新写
>>log.txt: 继续用一个文件,保存下来以前的内容

drach 发表于 2007-11-24 17:59

是直接加一句 >>log.txt 么,不过这个命令是输出日志吧,我只要特定的consel里面的显示结果

turtles 发表于 2007-11-24 19:40

对阿,就在konsole那里加上 >log.txt 或者 >>log.txt就可以了。然后在这个文件里只有显示结果没有其他的。另外在konsole会没有显示结果了。

最好你试一下看看效果怎么样。普通的>log.txt就好了。

drach 发表于 2007-11-24 20:31

konsole里怎么加·?

turtles 发表于 2007-11-24 20:40

比如你启动一个Java的Programm叫 HelloWorld.

那你就写 java HelloWorld > log.txt 就行了。

比如你在这个文件夹jboss (C:\jboss)写上面这个,那个log.txt也会存到这个文件夹。

如果要存到其他的地方你可以直接写 全部的Path比如 C:\MeineLogDaten\log.txt等等,不要只写log.txt。

drach 发表于 2007-11-24 22:10

原帖由 turtles 于 2007-11-24 19:40 发表 http://www.dolc.de/forum/images/common/back.gif
比如你启动一个Java的Programm叫 HelloWorld.

那你就写 java HelloWorld > log.txt 就行了。

比如你在这个文件夹jboss (C:\jboss)写上面这个,那个log.txt也会存到这个文件夹。

如果要存到其他的地方你 ...

还能这样用$考虑$ 不需要声明什么包么

还有能否同时再显示内容到console上$frage$

turtles 发表于 2007-11-24 22:37

同时显示是可以的,不过比较麻烦。

我自己没有试过,所以也不清楚。

康猪 发表于 2007-11-25 00:21

那就用tee命令

康猪 发表于 2007-11-25 00:26

turtles 你地毛呢?

turtles 发表于 2007-11-25 01:58

原帖由 康猪 于 2007-11-24 23:26 发表 http://www.dolc.de/forum/images/common/back.gif
turtles 你地毛呢? 地毛?什么意思啊,我中文不好..$frage$

康猪 发表于 2007-11-25 02:31

回复 #24 turtles 的帖子

你的头发啊胡子啊,本来很帅啊,现在光溜溜的了:D

turtles 发表于 2007-11-25 02:36

原帖由 康猪 于 2007-11-25 01:31 发表 http://www.dolc.de/forum/images/common/back.gif
你的头发啊胡子啊,本来很帅啊,现在光溜溜的了:D 哦,我自己换得。一共有14个猪,自己可以免费改阿,哈哈。那个比较适合老外阿,还有我也没有这个老,最少我的心里的年龄还没有这个大:)


看来我还是换回去好,哈哈。

康猪 发表于 2007-11-25 02:38

有点毛发比较有性格:D

康猪 发表于 2007-11-25 02:43

我在这里论坛看到很多这样不同的猪脑袋,可能就是这个系列把。满有趣的:)

drach 发表于 2007-11-26 12:14

我加了这一句,但显示错误啊,是不是要加个log4j的包$考虑$

java JumpTableEntry > e:\log.txt ;

康猪 发表于 2007-11-26 12:25

确定程序编译
确定运行时classpath设置好了
确定程序运行显示想要的结果
然后
如果要单纯把标准输出存入文件
java JumpTableEntry > e:\log.txt ;
如果既要存入文件又要显示在输出上
java JumpTableEntry | tee e:\log.txt;

管道,重定向在windows cmd上和linux shell上都能用,不存在命令问题

检查java程序!

drach 发表于 2007-11-26 13:28

我用的eclispe,总是显示syntax error......
页: [1] 2
查看完整版本: 问个java生成创建文件的问题(问题解决一半了,但又出现新问题了)