用java创建文本文件
我在创建具有我想要的名称的文本文件时遇到问题 我想创建一个名为“username”主题的文本文件用java创建文本文件,java,file,text,text-files,filewriter,Java,File,Text,Text Files,Filewriter,我在创建具有我想要的名称的文本文件时遇到问题 我想创建一个名为“username”主题的文本文件 private void saveSubjects(){ RegisterFrame r = new RegisterFrame(); String username = r.txtUser.getText();; try{ FileWriter f = new FileWriter(username + "" + "Subjects" + ".tx
private void saveSubjects(){
RegisterFrame r = new RegisterFrame();
String username = r.txtUser.getText();;
try{
FileWriter f = new FileWriter(username + "" + "Subjects" + ".txt", true);
String subjects[] = lstSubjects.getItems();
for(int i = 0; i<subjects.length; i++){
f.write(subjects[i] + "\r\n");
}
f.close();
JOptionPane.showMessageDialog(null, "Data saved!", "Data Saved", JOptionPane.INFORMATION_MESSAGE);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Nothing Inputted!", "Error", JOptionPane.ERROR_MESSAGE);
}
}
private void saveSubjects(){
RegisterFrame r=新的RegisterFrame();
字符串username=r.txtUser.getText();;
试一试{
FileWriter f=新的FileWriter(用户名+“+”主题“+”.txt”,true);
字符串主题[]=lstSubjects.getItems();
对于(int i=0;i请尝试以下方法:
String username = r.txtUser.getText();
System.out.println("The loaded username is: " + username);
然后您将看到问题所在:写入文件或获取用户名文本
如果问题在获取文本,考虑其他方式获取它或修改问题,通过删除文件写入部分并指定用户名获取部分。
否则,IDK将返回错误所在的位置
顺便说一句:它是如何工作的?文件根本没有创建?你看到任何错误吗?文件的名称错误?请指定你写文件的代码似乎很好。基于你的代码,我尝试了这个,效果非常好:
public static void main(String[] args) {
FileWriter f = null;
try {
f = new FileWriter("Subjects.txt", true);
String subjects[] = {"subject1", "subject2"};
for (String subject : subjects) {
f.write(subject + "\r\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(f);
}
}
我想你的问题在别处
请注意,最佳实践规定,可关闭的对象(如FileWriter
)应在finally块中关闭假设newregisterframe()
启动GUI窗口时,问题是您的代码在您有机会键入名称之前运行。相反,您需要使用捕获文本字段的内容,否则获取名称的代码会在窗口打开后立即运行,而您还没有机会键入任何内容
时间线如下所示:
RegisterFrame启动一个新线程来显示GUI,而不阻塞代码
您的代码立即从txtUser中提取“”,这当然是空的
现在你输入你的名字
没有发生任何事情,因为代码中没有任何内容关注该操作
相反,它应该是:
RegisterFrame启动一个新线程来显示GUI,而不阻塞代码
该方法返回或开始执行不依赖于GUI的工作
现在你输入你的名字
从新线程触发事件侦听器,并执行获取名称和写入文件的相关操作
你必须决定哪种类型的侦听器对你的用例有意义,例如,你可能想等到用户点击一个按钮(比如说“提交”或“写入文件”)并在该按钮上注册一个。然后你把你的用户名轮询和文件写入行为放在该操作中*你就成功了
*我应该补充一点,事实上,您希望在ActionListeners中尽可能少地执行操作,最好检查用户名是否为空,然后将实际工作传递给另一个线程,例如使用,但出于您的目的,我怀疑不必担心这一点。用户名是否始终为空?看起来您可能不需要您无法从RegisterFrame类正确获取它。您是否有任何错误或异常?如果有,请也发布该消息。它如何工作?是否有错误?您在定义用户名(double;;)的行上有语法错误。“但它不工作。”它到底在做什么?正如其他人所评论的,我们需要更多的信息。请查看有关如何填写其余细节的一些提示。特别是,我们需要一些关于什么不起作用的细节。您的代码是否编译?如果不编译,错误消息是什么?如果是,它运行时会发生什么?再次向我们提供任何错误消息和提示/或输出,并解释为什么它不是您想要的。