我是高中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给我。这有效吗?
答案 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
对象后,您可以直接处理它。