public void testFile(FileInputStream i)
{
int tempn;
tempn=i.read(fileByte);
} FileInputStream i = new FileInputStream("f:/new5.txt");
testFile(i);
tempn=i.read(fileByte);这是我做读取操作会出“NullPointerException”,i的值好象变了.必须再建立一个对象:
FileInputStream i = new FileInputStream("f:/new5.txt");
testFile(i);
FileInputStream i2 = new FileInputStream("f:/new5.txt");
tempn=i2.read(fileByte);这时可以读,请问如何解决? 

解决方案 »

  1.   

    请把程序贴完整一点,都不知道fileByte是从哪里来的。
      

  2.   

    public String UploadStart()
    {
    byte fileByte[]=new byte[102400];FileInputStream i = new FileInputStream("f:/new5.txt");testFile(i);while( (n=i.read(tempb))!=-1) //这时就近入不了循环了!
    {
    o.write(tempb,0,n);
    }
    }public void testFile(FileInputStream i)
    {
    String tempFileString="";

    String fileName="";

    int tempn=0;

    int tempj=0;

    byte fileByte[]=new byte[102400];

    //将上传的文件由二进直变成字符串
    while((tempn=i.read(fileByte))!=-1)
    {
    tempFileString = tempFileString + new String(fileByte, 0, tempn);
     
    tempj=tempj+tempn;
    }太多了兄弟们不爱看,这些是核心代码。
      

  3.   

    java传参数的过程,除了传primary类型(int, long, boolean...)外,其他都是传指针的过程(注,不完全是指针),所你,你传的时候除非使用obj.clone()功能,要不然一点是会被改变的
      

  4.   

    如果操作的是request对象,也可以建立两个流吗,两个对象中的属性一样吗?
    InputStream i=request.getInputStream();
    InputStream i2=request.getInputStream();
      

  5.   

    while( (n=i.read(tempb))!=-1) //这时就近入不了循环了!
    {
    o.write(tempb,0,n);
    }
    本来就是从同一条件下的循环跳出的,当然进不了
      

  6.   

    这是我为了编译通过,修改了你的部分代码,执行过程中,没有发现错误出现。class Test {
    public static void main(String[] args) {
    Test test = new Test();
    test.UploadStart();
    }

    public void UploadStart() {
    FileInputStream i;
    try {
    i = new FileInputStream("c:/HL7MessageXML.zip");
    testFile(i); byte tempb[]=new byte[102400];
    int n;
    while( (n=i.read(tempb))!=-1) {// 这时就近入不了循环了!
    //o.write(tempb,0,n);
    System.out.println("OK!");
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }


    } public void testFile(FileInputStream i) throws IOException {
    String tempFileString="";

    String fileName="";

    int tempn=0;

    int tempj=0;

    byte fileByte[]=new byte[102400];

    // 将上传的文件由二进直变成字符串
    while((tempn=i.read(fileByte))!=-1) {
    tempFileString = tempFileString + new String(fileByte, 0, tempn);  
    tempj=tempj+tempn;
    System.out.println(tempj);
    }
    }}