小编Jas*_*ins的帖子

关闭Java InputStreams

我对使用Java InputStreams时close()方法的用法有一些疑问.从我看到和从大多数开发人员那里读到的内容,你应该总是在不再需要的时候在InputStream上显式调用close().但是,今天我正在研究使用Java属性文件,我发现的每个例子都有这样的:

Properties props = new Properties();
try {
    props.load(new FileInputStream("message.properties"));
    //omitted.
} catch (Exception ex) {}
Run Code Online (Sandbox Code Playgroud)

使用上面的示例,无法显式调用close(),因为InputStream在使用后无法访问.我已经看到了许多类似的InputStreams用法,尽管它似乎与大多数人对明确关闭的说法相矛盾.我通读了Oracle的JavaDocs,并没有提到Properties.load()方法是否关闭了InputStream.我想知道这是否普遍可以接受,或者是否更喜欢做更像以下的事情:

Properties props = new Properties();
InputStream fis = new FileInputStream("message.properties");
try {
    props.load(fis);
    //omitted.
} catch (Exception ex) {
    //omitted.
} finally {
    try {
        fis.close();
    } catch (IOException ioex) {
        //omitted.
    }
}
Run Code Online (Sandbox Code Playgroud)

哪种方式更好和/或更有效?或者它真的重要吗?

java inputstream

65
推荐指数
7
解决办法
8万
查看次数

BufferedInputStream的用法

让我在这篇文章前面加上一点谨慎.在Java方面,我是一个初学者.我已经开启和关闭了PHP一段时间,但我已经准备好制作一个桌面应用程序,所以我决定使用Java,原因有很多.

我正在处理的应用程序处于开始阶段(少于5个类),我需要从本地文件中读取字节.通常,文件目前小于512kB(但将来可能会变大).目前,我使用a FileInputStream将文件读入三个字节数组,完全满足我的要求.但是,我已经看到了一个BufferedInputStream提到的,并且想知道我目前这样做的方式是最好的,还是我应该使用一个BufferedInputStream.

我做了一些研究,并在Stack Overflow上阅读了一些问题,但是我仍然遇到麻烦,了解何时使用而不使用的最佳情况BufferedInputStream.在我的情况下,我读取字节的第一个数组只有几个字节(小于20).如果我收到的数据在这些字节中是好的,那么我将文件的其余部分读入另外两个不同大小的字节数组.

我也听过很多人提到分析,看看哪个在每个特定情况下哪个更有效,但是,我没有剖析经验,我不确定从哪里开始.我也会喜欢这方面的一些建议.

对于这么长的帖子我很抱歉,但我真的想学习并理解做这些事情的最佳方法.我总是习惯于第二次猜测我的决定,所以我会喜欢一些反馈.谢谢!

java bufferedinputstream fileinputstream

35
推荐指数
2
解决办法
2万
查看次数

Java应用程序内存使用

我一直在写一个小的java应用程序(我的第一个!),目前只做了一些事情.目前,它运行Main类,它启动一个gui类(我编写的一个扩展JFrame的类,只包含一个JTextArea),一个通过大约40kb的BufferedInputStream加载本地文件的类,以及一个从一个类加载一个条目的类. Java属性文件.

一切都运行得很好,然而,我正在看Windows任务管理器,我注意到一些让我感到奇怪的东西.当我启动应用程序时,RAM使用量会在加载本地文件时跳转到大约40MB,并从中提取一些值以显示在JTextArea中,这对我来说是正常的,因为JVM,Java基类等等.但是,当应用程序完成加载文件时,它只是闲置,因为我目前还没有做任何其他事情.当它处于空闲状态时,只要窗口处于活动状态,应用程序的内存使用量就会每秒开始上升10-20kb.这让我很奇怪.如果我点击另一个程序使这个程序成为非活动窗口,内存仍会上升,但速度要慢得多(每3-5秒约10kb).

我没有测试看它会走多远,但这让我觉得非常奇怪.这是正常的Java行为吗?我想我的代码可能会泄漏内存,但我不确定如何.我确实关闭了我正在使用的BufferedInputStream,我看不出还有什么会导致这种情况.

如果我的解释没有意义,我很抱歉,但我很感激任何人可能有的见解和/或指示.

更新:

根据建议,我基本上将我的应用程序剥离到Main类,它只调用gui类.gui类只扩展JFrame并设置窗口大小,关闭操作和可见属性.随着这些变化,内存仍然以10-20kb的速度增长,但速度较慢.这与我收到的其他建议相结合,让我相信这只是Java.如果我发现其他任何有趣的东西,我将继续玩它,让大家都知道.

java memory memory-leaks

7
推荐指数
1
解决办法
8195
查看次数

从C程序调用命令行

我在C中编写命令行应用程序,从程序中,我想调用其他命令行应用程序.例如(并且仅作为一个明确的例子!),说我想写一个调用java编译器的C app.首先,我该怎么做?是否有一个直接调用命令行的C函数?对于二,我如何获取java编译器显示的正常文本输出并通过c程序显示它?

我很抱歉,如果这听起来有点疯狂,但我对C很新,我之前从未做过这样的事情.我很想开始编写一些这样的实用程序风格的应用程序.如果重要的是,我目前正在运行Windows,但如果可能的话,我更喜欢与平台无关的方法,因为我不时使用Linux.

c command-line

5
推荐指数
1
解决办法
6742
查看次数

Emacs记住文本选择

在我使用gEdit满足大部分编码需求几年后,我决定尝试新的东西,并尝试学习使用Emacs.我知道这很难,因为我听说Emacs有多复杂,但我被它的力量所吸引.最困难的事情是习惯于在.emacs文件中编写ELisp来改变编辑器的内容.我现在无法自己做,但我在这里和那里找到了一些有用的片段来改变一些选项.

我遇到很多问题的一件事是让Emacs记住我在命令后选择的文本.例如,我通常会突出显示一段代码来批量缩进它.但是,如果我在Emacs中执行此操作,它将在取消选择所有文本之前仅移动所选文本一次.有没有人知道这方面的方法?

无论如何,我为在我看来是一个简单的问题道歉,但经过一个小时的谷歌搜索并在这里搜索SO,我认为这是值得问的.我还有一些关于Emacs的问题,但我会保存它们并在我理解之后单独询问.谢谢!

UPDATE

有几个人问过我正在使用什么模式以及我输入的文本类型.虽然我对Emacs模式知之甚少,但我现在正在编辑一个纯文本文件.像这样的东西:

Hello, I am a simple text file
that is made up of three separate 
lines.
Run Code Online (Sandbox Code Playgroud)

如果我突出显示所有三行并点击TAB,我会得到:

    Hello, I am a simple text file
    that is made up of three separate 
    lines.
Run Code Online (Sandbox Code Playgroud)

这很好,但是,如果我像下面的一些建议使用Cx Cx重新选择文本并再次点击TAB,我得到这个:

        Hello, I am a simple text file
            that is made up of three separate 
                lines.
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!

emacs

4
推荐指数
1
解决办法
765
查看次数

MySQl查询问题

我没有在MySQL上花费大量时间,但我被要求调查我教会网站的问题.它已经停机了很长一段时间,我试图让它恢复运行.原始网站是在Mambo 4.5.3中完成的,这是一个旧版本.我会在某些时候升级它,但我只想让它暂时运行.

我目前在下面的Mambo内置查询中遇到问题.站点管理尝试访问页面的任何地方,我收到错误消息:

'on子句'中的未知列'c.access'.

我已经验证该列确实存在于指定的表中.现在我很难过.我打开了MySQL查询分析器并粘贴了查询,我得到了代码为1054的相同错误消息.有没有人有任何想法?

SELECT 
    c.*, 
    g.name AS groupname, 
    cc.name, 
    u.name AS editor, 
    f.content_id AS frontpage, 
    s.title AS section_name, 
    v.name AS author 
FROM 
    mos_content AS c, 
    mos_categories AS cc, 
    mos_sections AS s 
    LEFT JOIN mos_groups AS g ON g.id = c.access 
    LEFT JOIN mos_users AS u ON u.id = c.checked_out 
    LEFT JOIN mos_users AS v ON v.id = c.created_by 
    LEFT JOIN mos_content_frontpage AS f ON f.content_id = c.id 
WHERE 
    c.state >= 0 
    AND c.catid=cc.id 
    AND cc.section=s.id 
    AND s.scope='content' 
ORDER …
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-1054

1
推荐指数
1
解决办法
93
查看次数