Java代码从网站获取数据并将其写入文本文件

时间:2015-05-16 02:39:06

标签: java text input fetch

我是高中AP计算机科学课程的学生,作为最终项目,我必须制作一个股票管理应用程序。

这部分需要一个流程,每次打开Stock应用程序时,它都会获取Yahoo!上的数据(股票名称,符号和当前价格)。进行财务管理,并将其写入名为Results.txt的文本文件中。之后,在整个程序中,重复引用此文件以获取名称和价格。

我有使用Scanner读取文件的代码,如下所示,所以我想我应该稍后参考数据,但我不知道如何获取数据并将其写入文件。< / p>

我可以使用哪些java代码,以便每次我的前端代码运行时,首先访问Yahoo Finance并将库存数据写入文件供我使用?

这是我的方法,从文件读取数据到字符串的ArrayList,逐行

public ArrayList<String> readFile(File f){
    ArrayList<String> lines = new ArrayList<String>();
    try{ 
        a = new Scanner(f);
    }catch(FileNotFoundException e){
        System.out.println("File not found");
    }

    while(a.hasNextLine())
        lines.add(a.nextLine());
    return lines;
}

F将是一个传递给它的文件,结果文件或事务历史文件,我打算让它返回一个行的arraylist给我。这有效吗?

1 个答案:

答案 0 :(得分:1)

为了更方便使用,我建议您将可序列化对象写入文件。

我猜你使用java-yahoo-finance来实现你的工作。

Maven项目中:

  • 添加以下依赖项

    <dependency>
        <groupId>com.yahoofinance-api</groupId>
        <artifactId>YahooFinanceAPI</artifactId>
        <version>1.3.0</version>
    </dependency> 
    
  • 从网上获取数据并写入文件

        Stock stock = YahooFinance.get("INTC");
        File file = new File(RESULT_PATH);
        if (!file.exists()){
            file.createNewFile();
        }
    
        MyStock myStock = new MyStock();
        myStock.setName(stock.getName());
        myStock.setSymbols(stock.getSymbol());
        myStock.setPrice(stock.getQuote().getPrice().doubleValue());
    
        ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(file));
        os.writeObject(myStock);
        os.close();
    

由于Stock不可序列化,我们会创建一个MyStock类。

class MyStock implements Serializable{

    private String name;
    private String symbols;
    private double price;
    // setter and getter
}
  • 从文件中读取

    MyStock stock = null;
    
    try {
    
        ObjectInputStream is = new ObjectInputStream(new FileInputStream(new File(RESULT_PATH)));
        stock = (MyStock)is.readObject();
    }catch (Exception e){
        e.printStackTrace();
    }
    return stock;
    

在这里获得MyStock对象后,您可以直接处理它。