Java通过从url读取来创建文件

时间:2013-11-25 20:35:04

标签: java file url

我正在尝试在JAVA中构建一个程序,该程序从URL获取数据并将其保存到文本文件中。我的主要问题是我的程序不存储行更改。更具体的是我的代码:

import java.io.*;
import java.net.*;

public class Jva_Parser {
    public static void main(String[] args) throws Exception {

        URL oracle = new URL("http://cgi.di.uoa.gr/~std10108/a.txt");
        BufferedReader in = new BufferedReader(
        new InputStreamReader(oracle.openStream()));
        PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");

        String inputLine;
        while ((inputLine = in.readLine()) != null)
        {
            writer.write(inputLine+"\n");               
            System.out.println(inputLine);
        }
        writer.close();
        in.close();
    }
}

控制台的输出是:

  

这是一条消息!

     

这是第二行!

应该如此。该文件正是如此。 而创建的文件包含:

  

这是一条消息!这是第二行!

我无法理解我做错了什么。

编辑:我试过了,但它不起作用

writer.write(inputLine + System.getProperty( "line.separator" ));

是的我用记事本打开文件,我在Windows。我想把程序带到android所以任何进一步的信息都是有用的

3 个答案:

答案 0 :(得分:3)

你可能正在使用ala记事本来验证这个吗?这些程序不会显示行更改,因为您只有\ n,它可能不是系统行分隔符。尝试附加System.getProperty( "line.separator" )而不仅仅是\ n(可能是您系统上的\ n \ r)

答案 1 :(得分:0)

System.getProperty(“line.separator”)是正确的方法,因此它可以在所有平台上正常工作。

来自apache的FileUtils.copyURLToFile提供了相同的功能。你应该试试。 http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#copyURLToFile(java.net.URL,java.io.File)

答案 2 :(得分:0)

由于这种情况,我更喜欢PrintWriter

PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");

    String inputLine;
    while ((inputLine = in.readLine()) != null)
    {
        writer.println(inputLine);               
        System.out.println(inputLine);
    }

可能需要这个,它通常是我创建我的作家的方式:

PrintWriter out = new PrintWriter(new FileWriter("the-file-name.txt"));

我将其称为“out”,以便我可以插入或删除System。用于记录目的。 我使用像替换所有System.out的命令。没有。 或者用System.out.println

将它放回去.outlprintln