📄 datareader.java
字号:
package stock;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DataReader {//读取后台数据类
private String fileName;
private String name = null;
private String date = null;
int totalDataLength = 0;//总存数据参数
double[] data = null;
ReaderThread rt = null;
class ReaderThread extends Thread {//更新线程
boolean isExit = false;//判断程序是否是推出
public void run() {
while (!isExit) {
try {
System.out.println("Reader running...");
DataReader.this.updateData();
sleep(10*1000);//前台坐标刷新时间
} catch (InterruptedException ex) {
System.out.println("Interrupted");
}
}
}
}
public synchronized void updateData() {//更新数据
try {
InputStream is = getClass().getResourceAsStream(fileName + ".txt");
System.out.println(is);
BufferedReader br = new BufferedReader(new InputStreamReader(is));//以字符串形式读取文件
String name = br.readLine();
String date = br.readLine();
int totalDataLength = Integer.parseInt(br.readLine());
int length = Integer.parseInt(br.readLine());
if (name.equals(this.name) &&
date.equals(this.date) &&
totalDataLength == this.totalDataLength &&
data != null && length == data.length) {
return;
}
this.name = name;
this.date = date;
this.totalDataLength = totalDataLength;
this.data = new double[length];
for (int i = 0; i < data.length; i++) {
data[i] = Double.parseDouble(br.readLine());
}
System.out.println(length);
br.close();
} catch (IOException ex) {
Logger.getLogger(DataReader.class.getName()).log(Level.SEVERE, null, ex);
}
}
public DataReader(String name) {
this.fileName = name;
if (rt == null) {
rt = new ReaderThread();
rt.start();
}
}
public synchronized void setFileName(String fileName) {//更新文件名
this.fileName = fileName;
rt.interrupt();//强制刷新
}
public int getTotalDataLength() {
return totalDataLength;
}
public synchronized String getDate() {
return date;
}
public synchronized String getFileName() {
return fileName;
}
public synchronized String getName() {
return name;
}
public synchronized double[] getData() {
return this.data;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -