我目前有一台扫描仪扫描文件的全部内容,并将读取的数据打印到文本区域,有点像打开的功能。我的问题是我使用的方法(以及我所知道的唯一一个)需要创建一个文件然后删除,但是由于进程正在使用该文件而无法删除扫描仪,我不知道如何关闭扫描仪,因为它已在字符串中定义。它可能是一个简单的解决方案,但它一直在躲避我。先感谢您。这是我的代码:
int returnVal = fc.showDialog(this,
"Open");
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
String fullPath = file.getAbsolutePath();
try {
new FileEncryptor("DES/ECB/PKCS5Padding",fullPath).decrypt();
String content = new Scanner(new File(fullPath + ".dec")).useDelimiter("\\Z").next();
jTextArea1.setText(content);
//close scanner here to delete file
File n = new File(fullPath + ".dec");
System.out.println(n);
n.delete();
} catch (Exception e) {
e.printStackTrace();
}
} else {
}
//Reset the file chooser for the next time it's shown.
fc.setSelectedFile(null);
}
答案 0 :(得分:1)
将其分成更多行。
Scanner scanner = new Scanner(new File(fullPath + ".dec"));
String content = null;
try {
content = scanner.useDelimiter("\\Z").next();
} finally {
scanner.close();
}
答案 1 :(得分:0)
您无法在String中引用对象,尤其是Scanner。
String是您想要的数据的副本,因此关闭Scanner不会改变不可变的字符串(不可更改)
您要做的是抓住扫描仪,以便关闭它。
Scanner scanner = new Scanner(new File(fullPath + ".dec")).useDelimiter("\\Z");
String content = scanner.nextLine();
scanner.close();
答案 2 :(得分:0)
您丢失了扫描仪的手柄。
尝试类似:
Scanner contentScanner = new Scanner(new File(fullPath + ".dec"));
String content = contentScanner.useDelimiter("\\Z").next();
contentScanner.close();