A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雷丹 中级黑马   /  2013-10-24 10:59  /  1140 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我要输出之多个文件,代码如下,但是为什么文件生成了,但是里面却没有内容?谢谢!

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class test {

    public static void main(String args[])throws Exception{
         String[] filename = new String[101];
         for (int n = 0;n<101;n++)
         {
             filename[n]="src/Testvec" + n + ".txt";
             java.io.File testvec = new File(filename[n]);
             java.io.PrintWriter testout = new PrintWriter(testvec);
             testout.print("The weather is good!");
         }
     }
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
你没有关闭流,也没有刷新流,所以数据当然不会写入进去文件啦。
记得养成好习惯,流务必关闭。
代码修改如下,测试可以写入。
  1. package com.itcast.javabean;

  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.PrintWriter;
  5. import java.util.Scanner;

  6. public class test {

  7.     public static void main(String args[])throws Exception{
  8.          String[] filename = new String[101];
  9.          for (int n = 0;n<5;n++)
  10.          {
  11.              filename[n]="src/Testvec" + n + ".txt";
  12.              java.io.File testvec = new File(filename[n]);
  13.              java.io.PrintWriter testout = new PrintWriter(testvec);
  14.              testout.print("The weather is good!");
  15.              testout.flush();        //关闭流时也会刷新,所以这个可以不用
  16.              testout.close();        //养成良好习惯,使用完毕记得关闭流
  17.          }
  18.      }
  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
首先我们来看这段代码前面都是没有问题的。
涉及到的知识就是:
PrintWriter testout = PrintWriter(File file)
这个构造函数:使用指定文件创建不具有自动行刷新的新 PrintWriter。
也就是说你想写入的那句字符串被printWriter缓存起来了。
要想解决这个问题在最后一行加:
testout.flush();

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
1,你写入了缓冲区,需要刷新(或者关闭(底层自动刷新)),testout.flush();/    testout.close();     
2,使用println(带ln的print方法会自动刷新)
3,构造方法使用:先把文件封装到流中,在使用:PrintWriter(OutputStream out, boolean autoFlush)

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
java.io.PrintWriter testout = new PrintWriter(testvec);
testout.print("The weather is good!");
这一行行代码只是把字符串写入了缓冲区,并没有写入文件,需要刷新缓冲区
1、flush() 方法,刷新缓冲区,写入文件
2、close()方法,关闭流并刷新
回复 使用道具 举报
楼主你好,如果问题已解决请将帖子状态修改为提问结束,

如果未解决请继续提问,谢谢合作

修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马