所以,我正在构建一个将.flv文件转换为其他格式的程序.为此,我正在使用ffmpeg,它在通过命令行执行时完美地完成了它的工作.例如:
ffmpeg -i C:\test.flv -acodec libmp3lame -y C:\test.mp3
Run Code Online (Sandbox Code Playgroud)
这个例子就像一个魅力 - 执行命令时没有一个问题.
但是当我尝试从Java类中执行相同的命令时会出现问题.我在try-catch块中执行此操作:
System.out.println("Start");
Process p = Runtime.getRuntime().exec("cmd /c ffmpeg -i C:\test.flv -acodec libmp3lame -y C:\test.mp3");
System.out.println("End");
Run Code Online (Sandbox Code Playgroud)
控制台打印"开始".它开始转换,但没有完成.
有人能帮助我吗?
我正在使用一个JTextPane对象,假设它的名字是jtp,所以我可以用斜体或粗体显示一些有点短的String .我有一个字符串,我们将其命名为具有换行符的otxt.鉴于我使用的是Windows,它意味着\ r \n并使用它创建
System.getProperty("line.separator")
Run Code Online (Sandbox Code Playgroud)
并且在它们完全形成之前消除所有疑虑,我将我的String转换为char数组,走过char数组并在Eclipse控制台中编写所有字符的代码,使用隐式转换通过强制转换为int,是的,只有一个代码13 ,代表\ r和只有一个代码10,代表\n.现在,如果我使用
jtp.setText(otxt);
Run Code Online (Sandbox Code Playgroud)
一切都很顺利 - 我从中转换为char数组
jtp.getText()
Run Code Online (Sandbox Code Playgroud)
并打印出所有字符的代码,我只有一个代码13(\ r)和一个代码10(\n),因为我应该有.但我需要用斜体或粗体显示otxt的某些部分,所以我必须使用
jtp.insertString(0 /*offset*/, otxt, attributeSet /*italic, bold or whatever stylistic property*/)
Run Code Online (Sandbox Code Playgroud)
这是一个大问题:这会创建\ r \n \n \n \n我应该有\ r \n.这是使用相同的过程确认的:1)从jtp.getText()到char数组的字符串; 2)走阵; 3)打印字符代码; 我看到代码13(\ r)两次和代码10(\n)一次.帮我解决这个问题.希望你能找到有趣的问题.
所以,我正在JPanel使用一个对象绘制图形Grahics2D.当我的图形大于窗口时,
将JPanel其放置在a JScrollPane中.
但在我绘制图形之后,其JPanel尺寸不会改变,我无法滚动查看图形的其余部分,因此我找到了最低点和最左点,并在绘制图形的方法中手动设置尺寸(方法称为drawTrack()).
当我切换窗口或做其他事,使的JPanel可以重画,我的图形消失,所以我重写paint(),repaint(),validate(),invalidate()方法和在那里我调用drawTrack()汲取重绘JPanel的每一种可能的情况下,我的图形方法.
问题是当JPanel调用其中一个方法进行重绘我调用drawTrack()它们时,重绘我的图形后手动设置大小,以便我可以滚动JScrollPane并查看我的整个图形.但是当我setSize()在JPanel上调用方法使其再次重绘时,这意味着要调用drawTrack()等等.
出现滚动条是因为大小正确但它会创建一个无限循环,一遍又一遍地重绘我的图形.如果我没有调用setSize()方法,我JPanel会获得默认大小,因此它可以放在JScrollPane视口中,因此我无法滚动它来查看我的图形.
有什么建议?
我试图在MySQL数据库中导入大量的.dmp文件,因为有超过250个必须导入的文件,我编写了一个应用程序来自动执行250+ DOS命令.它的代码:
String baseCommand = "cmd /c MySQL -h localhost -u root amateurstable < ";
Process p = Runtime.getRuntime().exec(baseCommand + filePath);
Run Code Online (Sandbox Code Playgroud)
它确实执行它应该执行的命令.问题是某些.dmp文件大于100MB,但上面的代码不会等到命令执行完成.
当它执行大文件的导入命令时,它不会等到导入完成后立即执行下一个命令.这在计算机的响应性方面引起很多麻烦.
问题是如何让它等到命令执行完成?