当前位置: 代码迷 >> Java相关 >> java 输入输出异常问题
  详细解决方案

java 输入输出异常问题

热度:135   发布时间:2011-10-23 19:07:33.0
java 输入输出异常问题
源代码
import java.io.*;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class RetrivePage
{
    private static HttpClient httpClient = new HttpClient();
    // 设置代理服务器
    static
    {
        // 设置代理服务器的IP 地址和端口
        httpClient.getHostConfiguration().setProxy("10.110.0.52", 8080);
    }

    public static boolean downloadPage(String path) throws HttpException,
            IOException
    {
        InputStream input = null;
        OutputStream output = null;
        // 得到post 方法
        PostMethod postMethod = new PostMethod(path);
        // 设置post 方法的参数
        NameValuePair[] postData = new NameValuePair[2];
        postData[0] = new NameValuePair("name", "baidu");
        postData[1] = new NameValuePair("password", "*****");
        postMethod.addParameters(postData);
        // 执行,返回状态码
        int statusCode = httpClient.executeMethod(postMethod);
        // 针对状态码进行处理(简单起见,只处理返回值为200 的状态码)
        if (statusCode == HttpStatus.SC_OK)
        {
            input = postMethod.getResponseBodyAsStream();
            // 得到文件名
            String filename = path.substring(path.lastIndexOf('/') +1);
            // 获得文件输出流
            output = new FileOutputStream(filename);
            // 输出到文件
            int tempByte = -1;
            while ((tempByte = input.read()) > 0)
            {
                output.write(tempByte);
            }
            // 关闭输入输出流
            if (input != null)
            {
                input.close();
            }
            if (output != null)
            {
                output.close();
            }
            return true;
        }
        return false;
    }

    /**
     * 测试代码
     */
    public static void main(String[] args)
    {
        // 抓取lietu 首页,输出
        try
        {
            RetrivePage.downloadPage("http://www.baidu.com/");
        }
        catch (HttpException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
异常情况:
java.io.FileNotFoundException:
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at RetrivePage.downloadPage(RetrivePage.java:39)
    at RetrivePage.main(RetrivePage.java:68)
搜索更多相关的解决方案: java  代理服务器  private  源代码  public  

----------------解决方案--------------------------------------------------------
.
----------------解决方案--------------------------------------------------------
http://www.baidu.com/ 作为参数path 传入 downloadPage方法
在downloadPage方法中,path又作为文件名给了filename
output = new FileOutputStream(filename);
那么你把这个网址作为文件名,那这个文件是什么类型的文件,在哪个盘,都没有说明,所以报错,说文件没有找到
----------------解决方案--------------------------------------------------------
  相关解决方案