我在使用java删除Windows中的文件时遇到一些问题.出于某种原因,java正在锁定我的文件,我不知道为什么.这是我的代码:
private byte[] getFileByteArray(File file) {
try {
RandomAccessFile raf = new RandomAccessFile(file, "r");
FileChannel channel = raf.getChannel();
try {
ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
byte[] bt = new byte[buffer.remaining()];
buffer.get(bt);
channel.close();
raf.close();
file.delete();
return bt;
} catch (Exception ex) {
//Logger.getLogger(ConnectionImpl.class.getName()).log(Level.SEVERE, null, ex);
System.out.println(ex.toString());
}
} catch (FileNotFoundException ex) {
Logger.getLogger(ConnectionImpl.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
file.delete(),以及在资源管理器中手动尝试拒绝删除仍在使用的文件.但是在Linux中似乎都很好.
我错过了一个关闭()的地方吗?我可以确认首先生成文件的方法是关闭文件,因为我可以在使用file.delete()运行上面的代码之前删除文件
额外信息:上面的代码是名为getFileByteArray(文件文件)的方法的一部分,并且被调用如下:
public byte[] createReport(int id) {
Report report = new Report();
String filename = report.CreateReport(id);
return getFileByteArray(new File(filename)); …Run Code Online (Sandbox Code Playgroud) 有没有办法使用HashPrintRequestAttributeSet强制java中的目标打印机?
我不希望用户能够在printdialog中更改打印机
谢谢
使用'expect',可以执行SSH命令并解析这些命令的输出以改变程序流.我想用Java做这件事.也就是说,我希望我的Java应用程序启动SSH会话,在远程服务器上执行命令,并依赖于该命令的输出执行下一个命令,而无需启动新的SSH会话.
这在Java中可行吗?
谢谢
我正在尝试从Android应用程序发送短信.我正在使用PendingIntent,所以我可以使用广播接收器检查它是否已发送好.由于sendTextMessage调用将按照SMS完成,我需要发送一些"额外"数据来识别实际的SMS,以便我的广播接收可以对特定的SMS消息做一些工作.
这是我的发送代码:
String SENT = "SMS_SENT";
Intent sentIntent = new Intent(SENT);
sentIntent.putExtra("foo", "BAR");
PendingIntent sentPI = PendingIntent.getBroadcast(baseContext, 0,
sentIntent, 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(baseContext, 0,
new Intent(DELIVERED), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(smsMessage.getNumber(), null, smsMessage.getText(), sentPI, deliveredPI);
Run Code Online (Sandbox Code Playgroud)
问题是在我的BroadCast接收器中,它似乎无法读取我的额外"foo":
public class SMSSentBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
String smsID = intent.getStringExtra("foo");
......
}
}
Run Code Online (Sandbox Code Playgroud)
smsID只是变为null.
我的广播接收器是这样注册的:
baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));
Run Code Online (Sandbox Code Playgroud)
鉴于intent过滤器正在运行,我做错了什么?为什么不发送额外内容?
任何帮助表示赞赏.谢谢
我希望使用git与多个远程回购.我有我的中央git服务器(aka origin),以及我的本地开发机器.我想要做的是从kernel.org的git repo下载最新的linux内核.然后我将进行一些更改,然后将整个修改后的repo推送到我自己的git服务器.
我已经设法做到这一点(只需要做git remote添加几次 - 一个用于原点,一个用于kernel.org).但是,如果我从头开始克隆原点,我无法将kernel.org视为远程.
有没有办法推送remote add命令?或者是每次我想从kernel.org(在新机器上)引入更改时,我是否必须手动添加它?
此外,当我创建我的本地分支时,我让它跟踪来自kernel.org的远程分支.由于我无法在新克隆上看到kernel.org作为遥控器,这是否意味着该分支不再跟踪kernel.org了?
我如何在正则表达式中进行\n匹配?我希望实际的两个ASCII值92和110匹配(作为字符串).
我正在使用PHP的preg谢谢
我有一个jComboBox,我填充了一些对象.对象属于我自己创建的类型,包括String和int.对象的toString方法返回String,它显示在组合框中.
现在,我希望用代码在组合框中选择一个项目.我该怎么做呢?
有多个项目以相同的字母开头
谢谢
我希望使用RMI在网络上发送java.nio.ByteBuffer,但是ByteBuffer不可序列化.我尝试过以下自定义类无济于事:
public class NetByteBuffer implements java.io.Serializable {
ByteBuffer buffer;
public NetByteBuffer(ByteBuffer buffer) {
this.buffer = buffer;
}
public ByteBuffer getByteBuffer() {
return this.buffer;
}
Run Code Online (Sandbox Code Playgroud)
}
客户端仍然获得不可序列的异常.有任何想法吗?
谢谢
当我在java(使用JDBC)中创建这样的预准备语句时:
pStmt = conn.prepareStatement(qry);
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,当我想要一个可滚动的结果集并使用它:
pStmt = conn.prepareStatement(qry,ResultSet.TYPE_SCROLL_INSENSITIVE);
Run Code Online (Sandbox Code Playgroud)
我收到语法错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "RETURNING"
Run Code Online (Sandbox Code Playgroud)
我甚至没有在查询中使用RETURNING.
有任何想法吗?
任何帮助,将不胜感激.谢谢
更新: 如果我使用它似乎工作:
pStmt = db.prepareStatement(qry,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
Run Code Online (Sandbox Code Playgroud)
SENSITIVE和INSENSITIVE有什么区别?
谢谢
我正在用PHP开发WebApp.用户可以单击一个按钮,PHP代码最终将调用系统执行程序.由于WebApp将使用AJAX,因此用户可能会单击该按钮两次,或者确实单击另一个将启动另一个exec进程的按钮.
现在,我知道我可以写一个小的javascript来禁用按钮,直到单个事件完成.但是,这是客户端强制执行,很容易被覆盖.
我可以在PHP方面做些什么来阻止这样的事情发生吗?在我的头上,我有一个会话变量起到"信号灯",并执行每个脚本之前,这个变量将被检查的一个想法,必须返回0之前,脚本可以继续.
我是否采取正确的方式?或者这只会为死锁/竞争条件打开一堆蠕虫?
谢谢
更新:为了将其置于上下文中,我正在开发的系统将用于启动,停止和重新映像虚拟专用服务器.如果按下了重新映像按钮,PHP脚本将调用一些bash脚本开始重新映像VPS.但是,如果用户在完成此操作时尝试启动VPS ....
我正在开发一个旨在存储会员详细信息以及信用卡详细信息的解决方案.我正尽力遵守PCI DSS.到目前为止,这是我的设计:
PAN =主要帐号==信用卡上的长号
要获得PAN,客户端必须使用BOTH服务器进行身份验证,向服务器A询问相应的密钥A,然后将密钥A提供给服务器B,服务器B将PAN返回给客户端(提供的身份验证成功).服务器A只会使用服务器B的公钥对密钥A进行加密,因为它会事先得到它.服务器B可能必须首先发送一个盐,但我不认为必须加密
我还没有考虑过有关上述的任何实现(即编码)细节,但是解决方案是使用Java的Cajo框架(RMI包装器),这就是服务器之间的通信方式(目前,会员资格被转移)通过这种方式).
我希望服务器B进行解密而不是客户端的原因是我害怕解密密钥进入客户端的RAM,即使它在服务器上可能同样糟糕......
任何人都可以看到上述设计有什么问题吗?如果必须改变上述内容并不重要.
谢谢
jtnire
我们有一个通过RMI进行通信的客户端/服务器应用程序.服务器将HashMaps发送到客户端.一切正常,但是当发送大型HashMaps时,传输时间可能很慢.
有没有办法在发送之前压缩HashMaps,然后在客户端上解压缩?我不想在磁盘上创建任何文件(所有文件必须在RAM中)
谢谢
java ×8
php ×2
rmi ×2
ajax ×1
android ×1
ascii ×1
bytebuffer ×1
compression ×1
database ×1
encryption ×1
expect ×1
file-io ×1
git ×1
git-remote ×1
hashmap ×1
javascript ×1
jdbc ×1
pci-dss ×1
postgresql ×1
preg-replace ×1
printing ×1
regex ×1
resultset ×1
ssh ×1
swing ×1