高手,您好:
    我是一名学习软件工程的学生,现在,我正在“面壁修炼”,Java SE和io流,已经学习了快有半年的时间了,知识点已经掌握了,但是,没有做过太多的工程项目来巩固提高我的对于io流中的知识点的理解..
    最近,我开始通过实验,锻炼我对于Java的io部分的知识的理解与提高.并且锻炼我目前还没有经验的“调试运行时错误的能力”.
    我在D盘中建立了一个文件,如下:
    

解决方案 »

  1.   


    用debug调试走一下就清楚啦,start()方法里fops和dops都没有实例化。
    debug很重要,必须学会!!
    看这个视频
    http://video.sina.com.cn/v/b/11881813-1281081403.html
      

  2.   

    fops没有初始化。
    fops的初始是在类创建对象的时候,而你是在static 方法里调用,却没有创建任何的Test5的对象,所以没有被初始化过。
      

  3.   

     fops和dops都没初始化,要先new一个Test5调用构造方法初始化。
      

  4.   

    得new下Test5类,另外分隔符最好用File.separator。
      

  5.   

    学会查错,
    报错空指针
    那你就看看哪一个是空,
    debug调试停到这一行,你就会发现fops为空,
    然后你肯定在想我不是在构造器中实例化该对象了么?
    可以你可以在构造器中加一个输出语句看看是否有输出
    只有在实例对象的时候才会调用构造器。
      

  6.   

    在构造函数中初始化,但是你又没有new Test5啊?
      

  7.   

    你的文件名搞错了吧?把代码File file = new File("D:\\MyDoc\\text.txt")
    改为File file = new File("D:\\MyDoc\\test.txt")试试。同时应该在前面做一下文件是否存在的判断处理。
      

  8.   

    要么创建Test5的对象调用它的属性,要么把初始化工作放到静态代码块中
      

  9.   

    Test5构造器根本没有运行,你的start是static方法.执行时候根本不用创建Test5实例
      

  10.   

     File file = new File("f:\\javasj\\hanruota.txt");// 我放在F盘了
           if (file.exists() && file.isFile()) {
               try {
                   BufferedReader input = new BufferedReader(new FileReader(file));
                   String text;
                   while ((text = input.readLine()) != null)
                       txt.setText(txt.getText() + text + "\n");
               } catch (IOException ioException) {
                   System.err.println("File Error!");
               }
           }
    这个也许可以帮到你
      

  11.   

    你的方法是静态的,也就是不需要new出类的实例就调用的,没有调用类的构造方法他怎么能够初始化的么
      

  12.   

    楼主对Java的一些基本概念还需要再复习下,static关键字在class中的作用。
      

  13.   

    public Test5() {
            // TODO Auto-generated constructor stub
     
            try {
                fops = new FileOutputStream(file);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            dops = new DataOutputStream(fops);
             
        }
    构造器中的代码没有执行,main函数中的代码改成new Test5(). start();
      

  14.   

    没有new Test5 怎么实例化 你的 dops 和 fops
      

  15.   

    楼主你把start()方法的static去了你就可以发现你的程序有什么bug了。
      

  16.   

    package c_port_packageDoctor;import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;public class Test5 {
    File file = new File("D:\\MyDoc\\text.txt");
    static DataOutputStream dops = null;
    static FileOutputStream fops = null;

    public Test5() {
    // TODO Auto-generated constructor stub try {
    fops = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    dops = new DataOutputStream(fops);

    } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    start();
    }

    public static void start(){
    try {
    fops.write(19); ////在运行该方法之前没有new对象,所以fops为空啊,错误提示中不是说了37行空指针异常么,这种错误用不上调试一看就能看明白。还有就是如果你程序出异常那个对象也是出不来的,也可能为空。自己再好好学习下吧,看你学了半年好像基础还是不是很扎实。多做点小案例这才是最有效的学习方式。
    dops.writeInt(19);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
      

  17.   

    你是想读出还是写入,这个读出流你自己可以关闭的,就是file.flush();file.close();
      

  18.   

    你根本没有实例化test5!
    写的这个程序太乱,按照常规的思路和编写方式来写吧。
      

  19.   

     try {  
         // RandomAccessFile bw=new RandomAccessFile("F:\\test.txt","rw");
         // BufferedOutputStream bw=new BufferedOutputStream(new FileOutputStream("F:\\test.txt")); 
             // DataOutputStream bw=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("F:\\test.txt")));  
              PrintStream bw=new PrintStream(new BufferedOutputStream(new FileOutputStream("F:\\test.txt"))); 
           // PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter("F:\\test.txt")));  
            //设置文本内容  
          String str="writer in text";
                byte[] b=(str).getBytes();  
                //写入文件,还可以用其他方法如:write(String str)  
                bw.write(b,0,b.length);  
                bw.close();
               // pw.write(str);
               // pw.close();
                
            } catch (IOException ex) {  
               System.out.println(ex);  
            }  
    //这里有几个方法都能实现,注释掉的你也行,自己换着试试吧
      

  20.   

    我觉得跟IO流没有关系,感觉还是先看下SE的基础知识吧。
      

  21.   

    Test5()构造方法写的是初始化流,但是你没有调用啊,它肯定会抛出NullPointException
      

  22.   

    还是同意#29楼的观点,,感觉跟IO没啥关系,强化一下自己的SE基础吧,基础打牢
      

  23.   

    面向对象,你操作的哪一行报空指针,你操作的那个对象就是为null。想问楼主是否真的弄懂了面向对象?