- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的项目在通过毕业时遇到问题..我尝试制作一个考勤指纹系统..
我的问题是当我扫描指纹并保存指纹模板时..然后我关闭我的netbeans...保存文件未保存,正在被删除...如果我想验证它们,我必须再次扫描我的指纹..
任何人都可以帮助我解决问题..
谢谢...
+++ 这里是代码+++
import java.io.*;
import java.beans.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.digitalpersona.onetouch.*;
public class MainForm extends JFrame
{
public static String TEMPLATE_PROPERTY = "template";
private DPFPTemplate template;
private String file;
public class TemplateFileFilter extends javax.swing.filechooser.FileFilter {
@Override public boolean accept(File f) {
return f.getName().endsWith(".fpt");
}
@Override public String getDescription() {
return "Fingerprint Template File (*.fpt)";
}
}
MainForm() {
setState(Frame.NORMAL);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setTitle("Verifikasi dan Pendaftaran Sidik Jari");
setResizable(false);
final JButton enroll = new JButton("Pendaftaran Sidik Jari");
enroll.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { onEnroll(); }});
final JButton verify = new JButton("Verifikasi Sidik Jari");
verify.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { onVerify(); }});
final JButton save = new JButton("Simpan");
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { onSave(); }});
final JButton load = new JButton("Baca Template");
load.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { onLoad(); }});
final JButton quit = new JButton("Tutup");
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { System.exit(0); }});
this.addPropertyChangeListener(TEMPLATE_PROPERTY, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
verify.setEnabled(template != null);
save.setEnabled(template != null);
if (evt.getNewValue() == evt.getOldValue()) return;
if (template != null)
JOptionPane.showMessageDialog(MainForm.this, "Template sidik jari siap untuk verifikasi sidik jari.", "Pendaftaran Sidik Jari", JOptionPane.INFORMATION_MESSAGE);
onSave();
}
});
JPanel center = new JPanel();
center.setLayout(new GridLayout(4, 1, 0, 5));
center.setBorder(BorderFactory.createEmptyBorder(20, 20, 5, 20));
center.add(enroll);
center.add(verify);
center.add(save);
center.add(load);
JPanel bottom = new JPanel(new FlowLayout(FlowLayout.TRAILING));
bottom.setBorder(BorderFactory.createEmptyBorder(5, 20, 5, 20));
bottom.add(quit);
setLayout(new BorderLayout());
add(center, BorderLayout.CENTER);
add(bottom, BorderLayout.PAGE_END);
pack();
setSize((int)(getSize().width*1.6), getSize().height);
setLocationRelativeTo(null);
setTemplate(null);
setVisible(true);
}
private void onEnroll() {
EnrollmentForm form = new EnrollmentForm(this);
form.setVisible(true);
}
private void onVerify() {
VerificationForm form = new VerificationForm(this);
form.setVisible(true);
}
private void onSave() {
JFileChooser chooser = new JFileChooser();
chooser.addChoosableFileFilter(new TemplateFileFilter());
while (true) {
if (chooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
try {
File file = chooser.getSelectedFile();
//file="xxx";
if (!file.toString().toLowerCase().endsWith(".fpt"))
file = new File(file.toString() + ".fpt");
// file=file.toString()+".fpt";
if (file.exists()) {
int choice = JOptionPane.showConfirmDialog(this,
String.format("File \"%1$s\" sudah ada.\nApakah mau mengganti?", file.toString()),
"Penyimpanan Sidik Jari",
JOptionPane.YES_NO_CANCEL_OPTION);
if (choice == JOptionPane.NO_OPTION)
continue;
else if (choice == JOptionPane.CANCEL_OPTION)
break;
}
FileOutputStream stream = new FileOutputStream(file);
stream.write(getTemplate().serialize());
stream.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getLocalizedMessage(), "Penyimpanan Sidik Jari", JOptionPane.ERROR_MESSAGE);
}
}
break;
}
}
private void onLoad() {
JFileChooser chooser = new JFileChooser();
chooser.addChoosableFileFilter(new TemplateFileFilter());
if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
try {
FileInputStream stream = new FileInputStream(chooser.getSelectedFile());
byte[] data = new byte[stream.available()];
stream.read(data);
stream.close();
DPFPTemplate t = DPFPGlobal.getTemplateFactory().createTemplate();
t.deserialize(data);
setTemplate(t);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getLocalizedMessage(), "Loading Proses ", JOptionPane.ERROR_MESSAGE);
}
}
}
public DPFPTemplate getTemplate() {
return template;
}
public void setTemplate(DPFPTemplate template) {
DPFPTemplate old = this.template;
this.template = template;
firePropertyChange(TEMPLATE_PROPERTY, old, template);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MainForm();
}
});
}
}
最佳答案
在 onSave 方法中,您尝试使用以下方式获取文件名:
file.toString()
你应该这样做:
file.getName()
toString()
以字符串形式返回对象。
*已编辑*对于File,toString返回文件的路径,原始代码在这里是正确的。
要确保字节写入文件,您应该使用:
file.flush()
或者使用 ObjectOutputStream。它的 write(byte[]) 会阻塞,直到字节实际写入
FileOutputStream stream = new FileOutputStream(file);
ObjectOutputStream out = new ObjectOutputStream(stream);
out.writeObject(getTemplate().serialize());
out.flush();
out.close();
stream.close();
关于java - (ASK) 临时指纹扫描仪保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15923684/
我是 Alexa 技能开发的初学者。我已经安装了 ASK-CLI并且一直正常工作到今天,现在我收到此错误 :'bash: ask: command not found'我已经安装了 node 和 gi
我问这个部分是因为我想知道这样做的最佳实践方式,部分是因为我得到的最高谷歌结果是 2002 年的一个论坛帖子,其中甚至没有回答这个问题。 我继承了一些 VB6 代码,并且在所述代码中有一些 MsgBo
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在开发 Amazon Alexa 的一项技能。我正在尝试使用 echosim.io 进行相同的测试,但问题如下。 我的技能名称是MyBot,调用名称也是如此。 在 echosim.io 中,当我说
我刚刚从 tarbal 版本 freeradius-server-2.2.0.tar.gz 安装了 freeradius。comile 并使安装运行良好。我也可以运行 radius -X 以首先在 D
我的项目在通过毕业时遇到问题..我尝试制作一个考勤指纹系统.. 我的问题是当我扫描指纹并保存指纹模板时..然后我关闭我的netbeans...保存文件未保存,正在被删除...如果我想验证它们,我必须再
我有一个场景,我必须通过他的 id 获取用户的详细信息。这是一个进入我的 HTTP 处理程序层的 HTTP 请求,我利用从请求中获得的 id,向参与者发送一条消息,然后参与者与数据库服务对话以获取用户
我想查询 OWL2 文件中的两个类之间是否存在某些 ObjectPropery (OP)。我正在使用 JENA API 构建 SPARQL 查询。 到目前为止我尝试过的: 首先,我使用 SELECT
最近在 Akka actor 中创建的等待处理的 scala.concurrent.Future 对象遇到了一些超时,我想知道如何处理这些超时事件。他们真的迷路了吗?它们是否会重试并保存在内存中,或者
假设我们有两个品种,猫和狗。在 go 上,我们希望 cats meow 和 dogs bark。 ask 使给定代理集中的代理以随机顺序运行代码块,这很棒。但是,如果我们这样做: to go as
我想查询 OWL2 文件中的两个类之间是否存在某些 ObjectPropery (OP)。我正在使用 JENA API 构建 SPARQL 查询。 到目前为止我尝试过的: 首先,我使用 SELECT
这是我编写的一个简单函数,用于通过定时重试执行 Akka“询问”。有一个明显的竞争条件,我不确定如何解决。 def askWithRetry(actor: ActorRef, message: Any
我正在重写与 Particle.io API 通信的 Alexa 技能。这次我使用 ask-cli 来管理上传。所以到目前为止我的基本流程是: “问新”以创建入门技能和 lambda “请求部署”以创
我正在使用 ask ( ? ) 获取类型为 Set[String] 的值从一个 Actor 。然而, Actor 返回 Future[Any] . 转换此 Future[Any] 的正确方法是什么?至
我为终端编写了一个简单的小迷宫游戏,它反复要求用户做某事(例如“您想朝哪个方向走?[N/E/S/W]”)。我有一个在循环中运行的 navigate() 方法,它会触发这些问题,存储他们的答案并根据答案
我想知道如何请求用户的许可来更改蓝牙的状态?我不需要 wifi,因为它不是强制性的。 我搜索基本窗口,用户在该窗口中选中"is"或“否”按钮以允许应用修改应用的状态。 最佳答案 此代码将生成一个弹出窗
为了解释,我将代码分为几个子部分:(相同范围) 在第 1、2 和 3 部分,任何连接数据库的尝试都会成功。值得一提的是,每个 mysql_close() 都会立即由退出继续。 在第 4 部分,尝试连
我在这里搜索了很多主题,但无法解决我的问题。请帮我检查一下。 我制作了注册页面,当我制作密码字段时...... 我有users_controller.php,例如: class UsersContro
伙计们,我在表中有这样的结构: 该表保存了连接到交易所的一组市场链接的价格历史记录。数据不断增长 - 每 x 秒就会添加新价格。 我需要找出当前哪个MarketLink最便宜(询问价格) 应该查询什么
在我的程序的一部分中,我使用 JOptionPane 询问用户是否确定他将要做什么。但我不想让用户每次尝试都这样问,所以我喜欢使用 android 中带有“不再询问”的一些对话框的功能,但不知道如何在
我是一名优秀的程序员,十分优秀!