我用txt checkIsFile的一些方法编写了一个类,读取了多少行,放入数组并打印数组,它工作正常。
package myProva;
import java.io.*;
import java.util.StringTokenizer;
import java.util.*;
import java.text.SimpleDateFormat;
public final class FileImport {
private File fileToImport;
private Date[] dateArray;
private double[][] dataArray;
public FileImport(File myFile) {
fileToImport = myFile;
}//constructor for fileToImport field
int lines = 0;
String[][]bin;
public boolean checkIsFile(){
return fileToImport.isFile();
}
public int numberOfLines(){
lines = 0;
if(checkIsFile()){
try{
FileReader fr = new FileReader(fileToImport);
BufferedReader br = new BufferedReader(fr);
while((br.readLine()!=null)){
lines++;
}//end while loop
br.close();
}catch(Exception e){
System.out.println(e);
}
}
else{
System.out.println("There is no file to import");
}
return lines;
}//returns number of lines in a txt file
public void importToArray(){
int rows = 0;
bin = new String[numberOfLines()][6];
try {
FileReader fr = new FileReader(fileToImport);
BufferedReader br = new BufferedReader(fr);
String line = null;
while((line = br.readLine())!= null){
StringTokenizer stk = new StringTokenizer(line, ",");
while(stk.hasMoreTokens()){
for (int cls = 0;cls<6; cls++){
bin[rows][cls]= stk.nextToken();
}
rows++;
}//end inner while loop
}//end outer while loop
br.close();
}//end try
catch(Exception e){
System.out.println(e);
}
}//import data to bin array
public void printArray(){
for(int i =0;i<bin.length; i++){
System.out.printf("%s ", i);
for(int j =0;j<bin[i].length; j++){
System.out.printf("%s ", bin[i][j]);
}
System.out.println("");
}//end for loop
}//print contents of bin array
public String[][] getArray(){
return bin;
}//return bin array
我在主类
中调用这些方法package myProva;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import java.io.*;
public class ProvaJFrame extends javax.swing.JFrame {
/** Creates new form ProvaJFrame */
public ProvaJFrame() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
LoadDataButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
LoadDataButton1.setText("Load Data");
LoadDataButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
LoadDataButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(53, 53, 53)
.addComponent(LoadDataButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(450, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(122, 122, 122)
.addComponent(LoadDataButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(229, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void LoadDataButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new TxtFileFilter());
int returnVal = fileChooser.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION){
File myFile = fileChooser.getSelectedFile();
FileImport obj1 = new FileImport(myFile);
System.out.println(obj1.checkIsFile());
System.out.println(obj1.numberOfLines());
obj1.importToArray();
obj1.printArray();
System.out.println("--------------------------------------");
}
}
private class TxtFileFilter extends FileFilter{
public boolean accept(File file){
if(file.isDirectory()) return true;
String fname = file.getName();
return fname.endsWith("txt");
}
public String getDescription(){
return "txt file";
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ProvaJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton LoadDataButton1;
// End of variables declaration
我想添加以下方法并在main中调用但我不知道该怎么做,有人可以帮帮我吗?
public void buildDateArray(String[][]d) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//set date format here
for(int i=0;i<d.length; i++){
for(int j = 0;j<d[i].length; j++){
if(j==0){
try{
Date newDate = (Date)sdf.parse(d[i][0]);//parse first column to Date
dateArray[i] = newDate;
}//end try
catch(Exception e){
System.out.println(e);
}//end catch
}
}
}//end for loops
}
public void buildDataArray(String[][]d){
for(int i=0;i<d.length;i++){
for(int j=0;j<d[i].length; j++){
switch(j){
case 0:
dataArray[i][j]=0;
break;
case 1:
dataArray[i][j]=new Double(d[i][j]);
break;
case 2:
dataArray[i][j]=new Double(d[i][j]);
break;
case 3:
dataArray[i][j]=new Double(d[i][j]);
break;
case 4:
dataArray[i][j]=new Double(d[i][j]);
break;
case 5:
dataArray[i][j]=new Double(d[i][j]);
break;
}//end switch
}
}//end for loops
}
public void printDataArray(){
for(int i=0;i<dataArray.length;i++){
for(int j=0;j<dataArray[i].length;j++){
System.out.printf("%s ", dataArray[i][j]);
}
System.out.println("");
}
}
public void printDateArray(){
for(int i=0;i<dateArray.length;i++){
System.out.println(dateArray[i]);
}
}
}
谢谢大家。
PS txt文件如下:
4887 20100406 6250.01 6265.32 6214.18 6252.21 29445700 4888 20100407 6248.37 6256.4 6208.52 6222.41 28689600 4889 20100408 6199.94 6207.14 6138.02 6171.83 30684300
答案 0 :(得分:0)
你有一个你必须要求的对象。我假设它与您丢弃的相同。
ProvaJFrame pjf = new ProvaJFrame();
pjf.buildDateArray(someData);
pjf.setVisible(true);
答案 1 :(得分:0)
您可以将方法声明为静态,以便可以从main
调用它们。像这样:
public static void buildDataArray(String[][]d){
// ...snip...
}