我意识到在以下线程中"回答"了这个问题:使用schtasks.exe为Scheduled Tasks指定运行目录
但是,我仍然无法理解答案,并确切了解结果对于我的情况会是什么样子.
我的schtasks命令看起来像这样:
Schtasks /Create /TR "C:\Program Files\Java\jre6\bin\javaw.exe main.MoveFile input.txt" /SC WEEKLY /TN mytask
我想指定"C:\ My Library"目录中的开头.在tr部分之前放置一个"\",填写"C:\ Program Files\Java\jre6\bin"的起始目录.
我已经搞砸了很多,但我似乎无法让它发挥作用.
基本上,我得到一个像"C:\ test\subfolder1\subfolder2\subfolder3\myfile.txt"这样的路径,但是子文件夹1-3可能已经不存在,这意味着如果我尝试的话我会得到一个例外写入文件.
有没有办法创建目标文件所在的目录结构,或者通过使用某些任务在输出到文件然后删除文件时创建结构,或者通过解析路径的目录部分并使用mkdir任务第一?
我如何正确地将字节压缩到a ByteArrayOutputStream然后使用ByteArrayInputStream?读取?我有以下方法:
private byte[] getZippedBytes(final String fileName, final byte[] input) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(bos);
ZipEntry entry = new ZipEntry(fileName);
entry.setSize(input.length);
zipOut.putNextEntry(entry);
zipOut.write(input, 0, input.length);
zipOut.closeEntry();
zipOut.close();
//Turn right around and unzip what we just zipped
ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(bos.toByteArray()));
while((entry = zipIn.getNextEntry()) != null) {
assert entry.getSize() >= 0;
}
return bos.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)
当我执行此代码时,底部的断言失败,因为entry.size是-1.我不明白为什么提取的实体与压缩的实体不匹配.
java zip bytearrayoutputstream bytearrayinputstream zipoutputstream
为了放弃阅读整个问题,我的基本问题是:
PostgreSQL中是否有一个函数来转义字符串中的正则表达式字符?
我已经探测过文档,但无法找到这样的功能.
这是完整的问题:
在PostgreSQL数据库中,我有一个包含唯一名称的列.我还有一个定期在此字段中插入名称的进程,并且为了防止重复,如果需要输入已存在的名称,它会在末尾附加一个空格和括号.
即姓名,姓名(1),姓名(2),姓名(3)等
就目前而言,我使用以下代码来查找要在系列中添加的下一个数字(用plpgsql编写):
var_name_id := 1;
SELECT CAST(substring(a.name from E'\\((\\d+)\\)$') AS int)
INTO var_last_name_id
FROM my_table.names a
WHERE a.name LIKE var_name || ' (%)'
ORDER BY CAST(substring(a.name from E'\\((\\d+)\\)$') AS int) DESC
LIMIT 1;
IF var_last_name_id IS NOT NULL THEN
var_name_id = var_last_name_id + 1;
END IF;
var_new_name := var_name || ' (' || var_name_id || ')';
Run Code Online (Sandbox Code Playgroud)
(var_name包含我试图插入的名称.)
这暂时有效,但问题出在WHERE声明中:
WHERE a.name LIKE var_name || ' (%)'
Run Code Online (Sandbox Code Playgroud)
此检查不会验证有%问题的数字,并且它不会考虑多个括号,如"Name((1))",如果存在任何一种情况,则会抛出强制转换异常.
该WHERE声明确实需要像更多的东西: …
问题是我正在尝试构建一个在其资源中包含build.xml文件的项目.基本上,我将我的项目打包为Maven2的jar,然后使用ant安装程序来安装我的项目.
我需要过滤build.xml文件中的一个名为build.date的属性,但还有其他一些我不想过滤的属性,比如$ {basedir},因为它被ant安装程序使用但被替换由Maven的basedir变量.所以,我需要以某种方式告诉Maven过滤$ {build.date},而不是$ {basedir}.
我尝试创建一个属性文件作为过滤器,其中"basedir = $ {basedir}"作为其中一个属性,但我收到以下错误:
解析表达式:'$ {basedir}':检测到以下递归表达式循环:[basedir]
任何建议将不胜感激.
谢谢,
BJ
在我的项目中,我使用 Groovy 和 Spring Data JPASpecification来构建 Hibernate 查询。
我无法提供我的实际查询,但为了说明我的问题,假设我有建筑实体,每个建筑都有楼层,每个楼层都有房间和窗户。
我试图模拟的行为类似于本机 SQL 查询:
SELECT b.*, r.*
FROM building b
INNER JOIN floor f ON b.id = f.building_id
INNER JOIN window w ON f.id = w.floor_id
LEFT OUTER JOIN room r ON f.id = r.floor_id
WHERE w.id = 1;
Run Code Online (Sandbox Code Playgroud)
我有一个类似于以下的规范:
public class MySpec implements Specification<Building> {
@Override
public Predicate toPredicate(final Root<Building> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) {
final Join floorsJoin = root.join("floors");
final Join windowsJoin = floorsJoin.join("windows");
//I'd …Run Code Online (Sandbox Code Playgroud) 我有2个表,问题和答案,具有多对多的关系(即问题可以有多个问题可以重复使用多个答案和答案).为了规范化,我在它们之间有一个名为Question_Answer的交叉引用表,它与两个表都有多对一的关系.这些是他们的类定义:
class Question {
int id
int text
static hasMany = [questionAnswers : QuestionAnswer]
}
class Answer {
int id
int text
static hasMany = [questionAnswers : QuestionAnswer]
}
class QuestionAnswer {
int id
Question question
Answer answer
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试根据某些标准获取答案列表.这是我的标准查询(使用Grails的withCriteria功能):
def listing = Answer.withCriteria {
cache false
order "id", "asc"
eq("id", myAnswerID)
questionAnswers {
question {
isNotNull("text")
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我遇到的问题的一个例子:
我有一个符合3个不同问题的答案.我在"列表"中想要的是1个Answer对象,其questionAnswers列表中填充了3个匹配的QuestionAnswer对象.相反,我得到3个相同的Answer对象,所有对象都questionAnswers填充了它们.
有没有一种简单的方法来实现我想要的?我希望我只是错过了一些小事.
任何帮助/建议都非常感谢.
谢谢,BJ
我有一个非常简单的图像生成器程序,它只是在BufferedImage上绘制一个圆角矩形,然后将图像保存到文件中.
try
{
BufferedImage image = new BufferedImage(40, 40, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = image.createGraphics();
g2.setPaint(Color.blue);
g2.fillRoundRect(0, 0, 39, 39, 6, 6);
File file = new File("C:\\test.png");
ImageIO.write(image, "png", file);
}
catch( IOException e )
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
每当我使用drawRoundRect绘制矩形时,一切都按预期工作:

但是,当我使用fillRoundRect时,矩形似乎在右侧和底侧被裁剪:

我已经尝试使BufferedImage本身更大并保持矩形大小相同,但问题仍然存在.此外,无论我选择什么样的矩形宽度和高度或弧宽和高度,4个角都看起来不一样(虽然它越大,它看起来就越不明显).
这是一个常见的问题,还是我可能误解圆角矩形?
任何帮助或建议将不胜感激.
谢谢,
BJ