有没有办法让文件末尾的空值消失?我决定在当循环之前追加第一行,这样它就不会受到\n的影响,但是这样做会出现空值...(没有第一个追加,它只是跳过第一行,开始在第二行打印)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.io.*;
public class notepadMinus implements ActionListener{
//Properties
JFrame theFrame;
JPanel thePanel;
JMenuBar theBar;
JMenu theMenu;
JMenuItem openItem;
JMenuItem saveItem;
JTextArea theArea;
JScrollPane theScroll;
JFileChooser openChoose;
String strLine;
//Methods
public void actionPerformed(ActionEvent evt){
if(evt.getSource() == openItem){
System.out.println("Open File");
int intResult = openChoose.showOpenDialog(openItem);
if(intResult == JFileChooser.APPROVE_OPTION){
System.out.println("File selected");
File selectedFile = openChoose.getSelectedFile();
theArea.selectAll();
theArea.replaceSelection("");
try{
BufferedReader txtfile = new BufferedReader(new FileReader(openChoose.getSelectedFile()));
strLine = txtfile.readLine();
theArea.append(strLine);
while(strLine != null){
strLine = txtfile.readLine();
theArea.append( "\n" + strLine);
}
txtfile.close();
}catch(FileNotFoundException e){
System.out.println("File Not Found");
}catch(IOException e){
System.out.println("Reading Error");
}
//read lines
//put those lines in theArea - append
//System.out.println(openChoose.getSelectedFile());
}else{
System.out.println("Cancelled?");
}
}
}
//Constructor
notepadMinus(){
theFrame = new JFrame("Notepad Minus");
theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thePanel = new JPanel();
thePanel.setLayout(null);
thePanel.setPreferredSize(new Dimension(800, 600));
theBar = new JMenuBar();
//theBar.setSize(600,50);
//theBar.setLocation(100, 50);
//thePanel.add(theBar);
theFrame.setJMenuBar(theBar);
theMenu = new JMenu("File");
theBar.add(theMenu);
openItem = new JMenuItem("Open");
openItem.addActionListener(this);
theMenu.add(openItem);
saveItem = new JMenuItem("Save");
saveItem.addActionListener(this);
theMenu.add(saveItem);
theArea = new JTextArea();
theScroll = new JScrollPane(theArea);
theScroll.setPreferredSize(new Dimension(800, 600));
//theFrame.setContentPane(thePanel);
theFrame.setContentPane(theScroll);
theFrame.pack();
theFrame.setVisible(true);
openChoose = new JFileChooser();
}
//Main Method
public static void main(String[] args){
new notepadMinus();
}
}
它在JTextArea中的外观
hello world
hello world
hello world
hello world
null
改变
theArea.append(strLine);
while(strLine != null){
strLine = txtfile.readLine();
theArea.append( "\n" + strLine);
}
到
while(strLine != null){
theArea.append( "\n" + strLine);
strLine = txtfile.readLine();
}
如果在打印前读取,您将跳过空值检查。
您已经在循环之前读取了txtfile
中的一行。您应该在读取另一行之前先打印它。
这个错误还有另一个后果——第一行被跳过。如果您的文件有
a
b
c
d
作为其内容,输出将是
b
c
d
null
问题内容: 如何将一小段文字写入文件?我已经使用Google搜索了3-4多个小时,但无法找到具体方法。 有很多论据,我不知道该如何使用。 当您只想在文件中写一个名字和几个数字时,最容易使用的功能是什么? 编辑:添加了一段我的代码。 问题答案:
Go将数据写入文件的方法和上面介绍过的读取文件的方法很类似。 package main import ( "bufio" "fmt" "io/ioutil" "os" ) func check(e error) { if e != nil { panic(e) } } func main() { // 首先看一下如何将一个字符
通过FileEntry的createWriter方法可以获取FileWriter对象,通过FileWriter可以对文件进行写操作: fileEntry.createWriter(function(fileWriter) { //We'll do something with fileWriter later }, errorHandler); 对于FileEntry,可以通过Entry
相应的,文件读取有了,自然有文件写入类,使用方式与FileReader也类似: FileWriter writer = new FileWriter("test.properties"); writer.write("test"); 写入文件分为追加模式和覆盖模式两类,追加模式可以用append方法,覆盖模式可以用write方法,同时也提供了一个write方法,第二个参数是可选覆盖模式。 同样,
问题内容: 我将如何将javafx.scene.image.Image图像写入文件。我知道您可以在BufferedImages上使用ImageIO,但是有什么方法可以使用javafx图像吗? 问题答案: 差不多3年后,我现在有知识去做并回答这个问题。是的,原始答案也是有效的,但它涉及到先将图像转换为BufferedImage,我理想上想完全避免摆动。虽然这确实会输出图像的原始RGBA版本,足以满足
问题内容: 我必须从用户那里获取用户的名称和地址,并将其放入文本文件中。我写以下代码: 当我运行代码时,它需要用户输入,但文本文件为空。地址和名称未写入文本文件。如何在上面的代码中将名称和地址存储到文本文件中。 问题答案: 您创建的,但从来没有或它。 这些操作是实际写入文件的操作 正如@ManoDestra在注释中指出的那样,Java支持statement,它允许您将语句的格式设置为: 由于实现了