我已经创建了一个JFrame,里面有一个JTable,我可以在单元格上写信息。我可以单击Save JMenuItem Save并将信息写入txt文件。然而,当我试图读取文件并将其返回到表中时,我面临三个问题。
我的txt文件格式是这样的:
Number;Type;IP;Protocol;Line;
49897223040;WE4;192.168.12.98;TCP;Single;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
null;null;null;null;null;
我的代码如下:
public class PhoneOrganiser extends JFrame {
public static void main(String[] args){
//creation of the Window
JFrame frame = new JFrame ("Phone Organiser");
frame.setSize(200, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//declaring the type of Table, Number of columns and rows
String col[] ={"Number", "Type", "IP", "Protocol", "Line"};
DefaultTableModel tableModel = new DefaultTableModel (col,30);
//create the table
JTable table = new JTable(tableModel);
//add the Table to the scrollpane
JScrollPane scrollpane = new JScrollPane(table);
frame.add(scrollpane);
//creating the Menu bar
JMenuBar menubar = new JMenuBar();
frame.setJMenuBar(menubar);
//adding menus
JMenu file = new JMenu ("File");
menubar.add(file);
JMenu help = new JMenu ("Help");
menubar.add(help);
//adding items inside the menus
JMenuItem open = new JMenuItem ("Open");
file.add(open);
JMenuItem save = new JMenuItem ("Save");
file.add(save);
JMenuItem exit = new JMenuItem ("Exit");
file.add(exit);
exit.addActionListener(new Exit());
JMenuItem readMe = new JMenuItem ("Read me file");
help.add(readMe);
readMe.addActionListener(new ReadMe());
JMenuItem about = new JMenuItem ("About");
help.add(about);
about.addActionListener(new About());
//When the program starts for the first time, it creates a new txt file
Path path = Paths.get("/Users/PhoneData.txt");
try{
Files.createFile(path);
System.out.println("file created");
}catch (IOException e1){
System.out.println("file already exists");
}
//saving data from TABLE -> TO TXT - It can be done with FileChooser in V2
class SaveData extends JFrame implements ActionListener {
public void actionPerformed (ActionEvent e){
try{
File file = new File ("C:\\Users\\PhoneData.txt"); //declaring the path of the file
FileWriter fw = new FileWriter (file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter (fw);
//rows
for (int i =0; i < table.getRowCount(); i++){
//columns
for (int j=0; j < table.getColumnCount(); j++){
bw.write((String)table.getModel().getValueAt(i, j)+ ";"); //write the contents to the file
}
bw.write("/");
bw.newLine();
}
bw.close();
fw.close();
}catch (IOException e2){
}//end catch
}//end action method
}save.addActionListener(new SaveData()); //end SaveData class
//reading data from TXT -> TO TABLE
class OpenData extends JFrame implements ActionListener{
public void actionPerformed (ActionEvent e){
String line = null;
try{
File file = new File ("C:\\Users\\PhoneData.txt");
FileReader fr = new FileReader (file.getAbsoluteFile());
BufferedReader br = new BufferedReader (fr);
while((line = br.readLine()) != "null;")
{
String [] splitData = line.split("/");
Values values = new Values();
values.setNumber(splitData[0]);
//values.setType(splitData[1]);
//values.setIP(splitData[2]);
//values.setProtocol(splitData[3]);
//values.setLine(splitData[4]);
tableModel.addRow(line.split(""));
}
br.close();
}catch (IOException e3){
}//end catch
}//end action method
}open.addActionListener(new OpenData());//end OpenData class
}//end main
}//end class
public class Values{
private String Number;
private String Type;
private String IP;
private String Protocol;
private String Line;
public String getNumber(){
return Number;
}
public void setNumber(String Number){
this.Number = Number;
}
public String getType(){
return Type;
}
public void setType(String Type){
this.Type = Type;
}
public String getIP(){
return IP;
}
public void setIP(String IP){
this.IP = IP;
}
public String getProtocol(){
return Protocol;
}
public void setProtocol(String Protocol){
this.Protocol = Protocol;
}
public String getLine(){
return Line;
}
public void setLine(String Line){
this.Line = Line;
}
}//end class Values
Ad.3代码非常清楚:
for (int j=0; j < table.getColumnCount(); j++){
String value = (String)table.getModel().getValueAt(i, j);
if((value == null || "null".equals(value)){
value = "";
}
bw.write(value+";"); //write the contents to the file
}
Ad.2需要对代码进行简单修改:
StringBuilder builder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
builder.append(line);
}
String[] lineArray= builder.toString().split("/");
for(String line: lineArray){
String[] dataArray = line.split(";");
tableModel.addRow(dataArray);
}
希望这是你想要实现的目标。完整代码如下:
public class PhoneOrganiser extends JFrame {
public static void main(String[] args){
//creation of the Window
JFrame frame = new JFrame ("Phone Organiser");
frame.setSize(200, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//declaring the type of Table, Number of columns and rows
final String col[] ={"Number", "Type", "IP", "Protocol", "Line"};
final DefaultTableModel tableModel = new DefaultTableModel (col,30);
//create the table
final JTable table = new JTable(tableModel);
//add the Table to the scrollpane
JScrollPane scrollpane = new JScrollPane(table);
frame.add(scrollpane);
//creating the Menu bar
JMenuBar menubar = new JMenuBar();
frame.setJMenuBar(menubar);
//adding menus
JMenu file = new JMenu ("File");
menubar.add(file);
JMenu help = new JMenu ("Help");
menubar.add(help);
//adding items inside the menus
JMenuItem open = new JMenuItem ("Open");
file.add(open);
JMenuItem save = new JMenuItem ("Save");
file.add(save);
JMenuItem exit = new JMenuItem ("Exit");
file.add(exit);
//When the program starts for the first time, it creates a new txt file
Path path = Paths.get("/Users/PhoneData.txt");
try{
Files.createFile(path);
System.out.println("file created");
}catch (IOException e1){
System.out.println("file already exists");
}
//saving data from TABLE -> TO TXT - It can be done with FileChooser in V2
class SaveData extends JFrame implements ActionListener {
public void actionPerformed (ActionEvent e){
try{
File file = new File ("C:\\Inne\\PhoneData.txt"); //declaring the path of the file
FileWriter fw = new FileWriter (file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter (fw);
//rows
for (int i =0; i < table.getRowCount(); i++){
for (int j=0; j < table.getColumnCount(); j++){
String value = (String)table.getModel().getValueAt(i, j);
if((value == null || "null".equals(value))) {
value = "";
}
bw.write(value+";"); //write the contents to the file
}
bw.write("/");
bw.newLine();
}
bw.close();
fw.close();
}catch (IOException e2){
}//end catch
}//end action method
}
save.addActionListener(new SaveData()); //end SaveData class
//reading data from TXT -> TO TABLE
class OpenData extends JFrame implements ActionListener{
public void actionPerformed (ActionEvent e){
String line = null;
try{
File file = new File ("C:\\Inne\\PhoneData.txt");
FileReader fr = new FileReader (file.getAbsoluteFile());
BufferedReader br = new BufferedReader (fr);
StringBuilder builder = new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);
}
String[] lineArray= builder.toString().split("/");
table.setModel(new DefaultTableModel(col,0));
for(String currentLine: lineArray){
String[] dataArray = currentLine.split(";");
((DefaultTableModel)table.getModel()).addRow(dataArray);
}
br.close();
}catch (IOException e3){
}//end catch
}//end action method
}open.addActionListener(new OpenData());//end OpenData class
}
}
本文向大家介绍Java读取txt文件和写入txt文件的简单实例,包括了Java读取txt文件和写入txt文件的简单实例的使用技巧和注意事项,需要的朋友参考一下 写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂! 以上这篇Java读取txt文件和写入txt文件的简单实例就是小编分享给大家的全部内容了,希望能给
问题内容: 我正在尝试运行一个应用程序(例如),因此它将从文件中读取stdin并从stdout写入另一个文件。 目前我有 它可以按预期工作,因为我可以对该文件进行某些操作,并且top可以接收它。但是我无法重定向top的输出。我该如何实现? 编辑: 好吧,让我们从头开始。我正在测试: 问题答案: 让我们忘掉这似乎是一条红色的鲱鱼。 要将stdin或stdout映射到文件,可以使用重定向: 甚至:
我正在尝试读取一个文本文件,其中包含表示十六进制值的文本: 我应该读取这个文件,并使用写入一个新文件来写入这些十六进制值的二进制等价值,其中表示0,而表示1。 示例: 而的输出是 在应该的时候 我的逻辑就在那里,但是似乎只写了的第一行。这让我相信我只是在读第一行。 我被迫使用C样式的字符串,因此我读入了char数组。 这是我的代码 我怀疑是,但我不完全确定。我加了几条评论,试图解释一下我去的路线。
所以,我试图让我的程序从文本文件中读入一个结构数组,它编译得很好,但看起来并没有真正读入值?...我不知道为什么。这是代码的相关部分: 这是txt文件(标题:Planets.txt) 水星120 50 500 12.1 30 2金星120 50 500 29.1 30 6地球120 50 500 32.2 30 7月亮120 15 50 5.3 30 2火星120 50 500 12.2 30 4
问题内容: 如何将一小段文字写入文件?我已经使用Google搜索了3-4多个小时,但无法找到具体方法。 有很多论据,我不知道该如何使用。 当您只想在文件中写一个名字和几个数字时,最容易使用的功能是什么? 编辑:添加了一段我的代码。 问题答案:
本文向大家介绍c++读取和写入TXT文件的整理方法,包括了c++读取和写入TXT文件的整理方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇c++读取和写入TXT文件的整理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。