我是 JAVA 的初学者。这是我在这个论坛上的第一个问题。我正在为一个项目开发一个十六进制编辑器工具。作为其中的一部分,我必须制作一个小应用程序,它应该打开一个文本文件并读取它的内容并将其显示在编辑器区域中。然后它还应该使用 SHA-256 等制图算法为文本文件中的文本生成哈希值。我在互联网上找到了一个非常有用的代码。我正在尝试重用它。我被困在将文本文件的内容显示到编辑器中。代码是这样的。
public Test() throws IOException {
// passes the number of array elements to the
// editor.
byte[] ar;
ar = new byte[16 * 16 * 100];
Arrays.fill(ar, (byte) 0);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(bos);
win = new JFrame("Hex Editor");
win.setSize(654, 473);
JButton btnOpenFile = new JButton("Open File");
btnOpenFile.setBounds(67, 38, 91, 23);
win.getContentPane().add(btnOpenFile);
btnOpenFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Fileopener opener = new Fileopener();
//returns the string value through getpause() method.
System.out.println(opener.getPause());
}
});
oos.writeObject("kirandfasnvcxnz.,mvnmc,xznvmcxzmnvcmxzcccbnxz cz hajk vc jbcvj xbnzvc sbj cvxz,bcxjnzbcvjhs avcjz cxmzncvxz ");
ar=bos.toByteArray();
我为 fileopener 定义了另一个类文件的方法。在执行期间返回文本文件的内容。我的问题是如何将从文本文件中读取的字符串值传递给此方法。以便它显示在编辑器中。
oos.writeObject("kirandfasnvcxnz.,mvnmc,xznvmcxzmnvcmxzcccbnxz cz hajk vc jbcvj xbnzvc sbj cvxz,bcxjnzbcvjhs avcjz cxmzncvxz ");
编辑器正在使用上面的代码行显示内容。我试图通过调用返回读取文本的字符串值的 getter 方法来做到这一点。我用于此的方法是
oos.writeObject("Fileopener.getPause()");
它没有显示文本文件的所需内容。相反,编辑器在编辑器的大括号内显示函数(我猜它已被读取为字符串)。提前感谢您的帮助。@sgmorrison 下面是Fileopener()的代码`
package hexeditor;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFileChooser;
public class Fileopener {
static String pause;
/**
*
*/
public Fileopener() {
super();
// TODO Auto-generated constructor stub
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
StringBuffer contents = new StringBuffer();
BufferedReader inFile = null;
if (returnVal == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
try {
inFile = new BufferedReader(new FileReader(f));
String text = null;
while ((text = inFile.readLine()) != null) {
contents.append(text)
.append(System.getProperty(
"line.separator"));
}
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
if (inFile != null) {
inFile.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
// show file contents here
pause = contents.toString();
setPause(pause);
}
}
public static String getPause() {
return pause;
}
public void setPause(String pause) {
this.pause = pause;
}
}
`