package tester;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class Tes {
public static void main(String[]ra)throws IOException
{
try {
URL url1=new URL("http://www.qidian.com");
InputStream in=url1.openStream();
InputStreamReader inr=new InputStreamReader(in,"utf-8");
BufferedReader br=new BufferedReader(inr);
String data=br.readLine();
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
ws.write(data);
while(data!=null)
{
System.out.println(data);
data=br.readLine();
ws.write(data);
}
ws.flush();
ws.close();
fr.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.write(Unknown Source)
at tester.Tes.main(Tes.java:28)
while(data!=null)
{
System.out.println(data);
data=br.readLine();
if(data != null){
ws.write(data);
}
}
加一个if判断
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
ws.write(data);
这怎么还有个ws.write(data);
空指针异常,输出一下变量,看看那个变量为null了
URL读取链接地址有问题,logger一下看看
while(data!=null)
{
System.out.println(data);
data=br.readLine();
ws.write(data);
}
这段代码有问题,改为:
while((data=br.readLine())!=null)
{
System.out.println(data);
ws.write(data);
}
应该就正确了
while(data!=null) 把条件改成 br.readLine()!=null你是先判断data后再给他赋值的
{
System.out.println(data);
data=br.readLine();
ws.write(data);
}
public static void main(String[] args) {
InputStream in = null;
try {
/* InputStreamReader inr = new InputStreamReader(in, "utf-8");
BufferedReader br = new BufferedReader(inr);
String data = br.readLine();
FileWriter fr = new FileWriter("C:\\Users\lenovo\Desktop\\u8d77\u70b9.txt");
BufferedWriter ws = new BufferedWriter(fr);
ws.write(data);
while (data != null) {
System.out.println(data);
data = br.readLine();
ws.write(data);
}
ws.flush();
ws.close();
fr.close();*/
URL url1 = new URL("http://www.sogou.com");
in = url1.openStream();
File file= new File("123456.txt");
if(!file.exists()){
file.createNewFile();
}
int result = 0 ;
byte[] buff = new byte [1024] ;
String info = "";
StringBuilder results = new StringBuilder();
while ((result=in.read(buff))!=-1){
in.read(buff,0,result);
results.append(new String(buff, "UTF-8"));
}
Files.write(Paths.get(file.getName()),new String(results).getBytes() , StandardOpenOption.APPEND);//
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
写入的时间有点问题,大概意思是这样。
String data=br.readLine();
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
ws.write(data);
while(data!=null)
{
System.out.println(data);
data=br.readLine();
ws.write(data);
}
在while循环中,data=br.readLine()后,你没有判断data是否为null,就去write(data);
你可以修改为:
String data=br.readLine();
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
while(data!=null)
{
System.out.println(data);
ws.write(data);
data=br.readLine();
}
这样每次都是在判断data不为null的情况下,才会去write(data);
貌似大家普遍的写法是:
String data=br.readLine();
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
ws.write(data);
while(data!=null)
{
System.out.println(data);
data=br.readLine();
ws.write(data);
}
在while循环中,data=br.readLine()后,你没有判断data是否为null,就去write(data);
你可以修改为:
String data=null;
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
while ((data = br.readLine()) != null)
{
System.out.println(data);
ws.write(data);
}
个人感觉按照下面的修改比较好!
修改前:
String data=br.readLine();
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
ws.write(data);
while(data!=null)
{
System.out.println(data);
data=br.readLine();
ws.write(data);
}
修改后:
String data="";
FileWriter fr=new FileWriter("C:\Users\lenovo\Desktop\起点.txt");
BufferedWriter ws=new BufferedWriter(fr);
while ((data = br.readLine())!= null)
{
System.out.println(data);
ws.write(data);
}
我只是想说,麻烦下次把行号贴出来……