我应该创建一个java applet项目,并且我需要从.csv文件中读取数据并将其放在可滚动的表中。我试图dothat,我得到一个FileNotFoundException异常。
这是我的代码:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
@SuppressWarnings("serial")
public class Test extends Applet
{
Table table;
public void init()
{
try
{
table = new Table();
}
catch (Exception e)
{
e.printStackTrace();
}
this.add(table);
}
}
class Table extends JPanel
{
private String[][] productList;
private JTable table;
public Table() throws Exception
{
read();
BorderLayout layout = new BorderLayout();
layout.addLayoutComponent(new JScrollPane(table), BorderLayout.CENTER);
setLayout(layout);
}
private void read() throws Exception
{
ArrayList<String[]> list = new ArrayList<String[]>();
try
{
BufferedReader br = new BufferedReader(new FileReader("Products.csv"));
String line = br.readLine();
while ((line = br.readLine()) != null)
{
String[] toBeAdded = line.split(",");
list.add(toBeAdded);
}
}
catch (Exception e)
{
e.printStackTrace();
}
productList = new String[list.size()][3];
for (int i = 0; i < productList.length; i++)
for (int j = 0; j < productList[i].length; j++)
productList[i][j] = list.get(i)[j];
}
}
products.csv位于根文件夹中。我尝试阅读一个正常的非摇摆项目,它可以工作但不是这个。谁能帮我?
答案 0 :(得分:1)
我可以想到两个潜在的问题:
对于第二种,获取ClassLoader
getResourceAsStream
的最简单方法是致电Class
的{{3}}。
我还没有测试过,但这样的事情应该有效:
BufferedReader br = new BufferedReader(new InputStreamReader(Table.class.getResourceAsStream("/Products.csv")));
如果无法编译,请将Table.class
更改为this.getClass()
请注意,/
表示Products.csv位于.jar文件的根目录。否则,它将使用包名作为要查看的目录(即,如果包是package this.is.my.boomstick;
,它会尝试打开this/is/my/boomstick/Products.csv
)