求助大佬。
将网页源码写入txt文件,失败。
代码如下://抓取菜鸟首页源码,打印到指定文件
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;public class Demo1 { public static void main(String[] args) {
// 使用到输入字符流
BufferedReader in = null;
PrintWriter out = null; try {
// 使用URL字符串实例URL
URL url1 = new URL("http://www.runoob.com");
// 实例化URLConnection对象
URLConnection urlConnection = url1.openConnection();// 此方法返回一个URLConnection对象
// URLConnection子类HttpURLConnection
HttpURLConnection connection = null; // 判断openConnection()方法的返回值是否是HttpURLConnection对象
if (urlConnection instanceof HttpURLConnection) {
connection = (HttpURLConnection) urlConnection;// 强制类型转换
// 使用流抓取内容:从左到右:缓冲字符流BufferedReader;转化流InputStreamReader;getInputStream()方法返回字节流
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
// 输出抓取的内容到指定的txt文件
out = new PrintWriter(new FileWriter("F:\\java测试用例\\runoob.txt"));
String read = null;
read = in.readLine();
// 解决乱码问题
byte a[] = read.getBytes();
while (read != null) {
out.println(new String(a, "UTF-8"));
read = in.readLine();
a = read.getBytes();
}
System.out.println("抓取网页成功");
} else {
System.out.println("URl协议不符合要求");
System.exit(0);
}
} catch (MalformedURLException e) {
System.out.println("字符串指定未知协议");
e.printStackTrace();
} catch (IOException e) {
System.out.println("发生I/O异常");
e.printStackTrace();
} finally {
while (in != null) {
try {
in.close();
} catch (IOException e) {
System.out.println("输入流关闭失败");
e.printStackTrace();
}
}
while (out != null) {
out.close();
}
} }}感谢。

解决方案 »

  1.   

    package controller;import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;public class Test111 { public static void main(String[] args) {
    // 使用到输入字符流
    BufferedReader in = null;
    PrintWriter out = null; try {
    // 使用URL字符串实例URL
    URL url1 = new URL("http://www.runoob.com");
    // 实例化URLConnection对象
    URLConnection urlConnection = url1.openConnection();// 此方法返回一个URLConnection对象
    // URLConnection子类HttpURLConnection
    HttpURLConnection connection = null; if (urlConnection instanceof HttpURLConnection) {
    connection = (HttpURLConnection) urlConnection;// 强制类型转换
    in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    InputStream inputStream = connection.getInputStream();
    out = new PrintWriter(new FileWriter("c:\\abc\\runoob.txt"));
    byte a[] = new byte[1024];
    int readLength = inputStream.read(a);
    while (readLength != -1) {
    String newString = new String(a, 0, readLength, "utf-8");
    out.append(newString);
    readLength = inputStream.read(a);
    }
    System.out.println("抓取网页成功");
    } else {
    System.out.println("URl协议不符合要求");
    }
    } catch (MalformedURLException e) {
    System.out.println("字符串指定未知协议");
    e.printStackTrace();
    } catch (IOException e) {
    System.out.println("发生I/O异常");
    e.printStackTrace();
    }
    }}
    输入流写法!不用buffer
      

  2.   

    package controller;import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;public class Test112 { public static void main(String[] args) {
    // 使用到输入字符流
    BufferedReader in = null;
    PrintWriter out = null; try {
    // 使用URL字符串实例URL
    URL url1 = new URL("http://www.runoob.com");
    // 实例化URLConnection对象
    URLConnection urlConnection = url1.openConnection();// 此方法返回一个URLConnection对象
    // URLConnection子类HttpURLConnection
    HttpURLConnection connection = null; // 判断openConnection()方法的返回值是否是HttpURLConnection对象
    if (urlConnection instanceof HttpURLConnection) {
    connection = (HttpURLConnection) urlConnection;// 强制类型转换
    // 使用流抓取内容:从左到右:缓冲字符流BufferedReader;转化流InputStreamReader;getInputStream()方法返回字节流
    in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    // 输出抓取的内容到指定的txt文件
    out = new PrintWriter(new FileWriter("c:\\abc\\runoob.txt"));
    String read = null;
    read = in.readLine();
    // 解决乱码问题
    while (read != null) {
    byte a[] = read.getBytes();
    out.println(new String(a, "UTF-8"));
    read = in.readLine();
    }
    System.out.println("抓取网页成功");
    } else {
    System.out.println("URl协议不符合要求");
    }
    } catch (MalformedURLException e) {
    System.out.println("字符串指定未知协议");
    e.printStackTrace();
    } catch (IOException e) {
    System.out.println("发生I/O异常");
    e.printStackTrace();
    } finally {
    if (in != null) {
    try {
    in.close();
    } catch (IOException e) {
    System.out.println("输入流关闭失败");
    e.printStackTrace();
    }
    }
    if (out != null) {
    out.close();
    }
    } }}
    buffer的写法,是你的程序逻辑有问题,帮你改了!
      

  3.   


    import java.io.IOException;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.List;
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;public class runoobDemo { public static void main(String[] args) {
            // 使用到输入字符流
            BufferedReader in = null;
            PrintWriter out = null;
     
            System.out.println("1");
            
            try {
                // 使用URL字符串实例URL
                URL url1 = new URL("http://www.runoob.com");
                System.out.println(url1);
                // 实例化URLConnection对象
                URLConnection urlConnection = url1.openConnection();// 此方法返回一个URLConnection对象
                // URLConnection子类HttpURLConnection
                HttpURLConnection connection = null;
     
                // 判断openConnection()方法的返回值是否是HttpURLConnection对象
                if (urlConnection instanceof HttpURLConnection) {
                    connection = (HttpURLConnection) urlConnection;// 强制类型转换
                    // 使用流抓取内容:从左到右:缓冲字符流BufferedReader;转化流InputStreamReader;getInputStream()方法返回字节流
                    in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                    // 输出抓取的内容到指定的txt文件
                    out = new PrintWriter(new FileWriter("d:\\runoob.txt"));
                    String read = null;
                    read = in.readLine();
                    // 解决乱码问题
                    byte a[] = read.getBytes();
                    while (read != null) {
                        out.println(new String(a, "UTF-8"));
                        read = in.readLine();  //修改了这里,读到最后一行read是null,所以出错
                        if(read!=null){
                          a = read.getBytes();
                        System.out.println(new String(a, "UTF-8"));}
                    }
                    System.out.println("抓取网页成功");
                } else {
                    System.out.println("URl协议不符合要求");
                    System.exit(0);
                }
            } catch (MalformedURLException e) {
                System.out.println("字符串指定未知协议");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("发生I/O异常");
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        System.out.println("输入流关闭失败");
                        e.printStackTrace();
                    }
                }
                if (out != null) {
                    out.close();
                }
            }
            System.out.println("2222222222");
        }
     
    }