不使用数据库的Java应用程序如何存储和显示以前的信息

不使用数据库的Java应用程序如何存储和显示以前的信息,java,database,p2p,flat-file,Java,Database,P2p,Flat File,我有一个基于对等文件共享系统的java应用程序项目(客户端)。 它不使用任何类型的数据库 有一个下载标签,显示以前下载的文件和当前下载的文件的名称 我不明白的是,这些信息是从哪里存储和检索的。每次我关闭并重新打开应用程序时,都会看到以前下载的信息 此外,它还存储以前连接的主机的IP地址,并在选项卡中显示它们 我检查了项目文件夹中是否没有任何平面文件、db文件或日志文件。 有150个文件的代码,所以我真的不能通过它找到 对不起,如果这个问题太天真了,但是如果有人有一点线索,请发表评论 编辑:我找到

我有一个基于对等文件共享系统的java应用程序项目(客户端)。 它不使用任何类型的数据库

有一个下载标签,显示以前下载的文件和当前下载的文件的名称

我不明白的是,这些信息是从哪里存储和检索的。每次我关闭并重新打开应用程序时,都会看到以前下载的信息

此外,它还存储以前连接的主机的IP地址,并在选项卡中显示它们

我检查了项目文件夹中是否没有任何平面文件、db文件或日志文件。 有150个文件的代码,所以我真的不能通过它找到

对不起,如果这个问题太天真了,但是如果有人有一点线索,请发表评论

编辑:我找到了这段代码

    public void saveDownloadInfo()
        throws IOException
{
    FileOutputStream    fos = new FileOutputStream(ServiceManager.getDownloadSaveFilename());
    ObjectOutputStream  oos = new ObjectOutputStream(fos);

    try
    {
        // Use latest version to serialize.
        serialize1(oos);
    }
    finally
    {
        oos.close();
    }
}


public void loadDownloadInfo()
        throws Exception
{
    FileInputStream     fis = new FileInputStream(ServiceManager.getDownloadSaveFilename());
    ObjectInputStream   ois = new ObjectInputStream(fis);

仍然无法跟踪它的存储位置。

可能只是将文件系统用作数据库。例如,如果它知道它下载的所有文件都在一个特定的文件夹中,那么它只会扫描该文件夹中以前下载的文件


编辑:读取此应用程序还存储IP地址后,必须以某种方式本地或远程存储此信息。如果您确定该信息未存储在本地,那么唯一的答案是使用唯一的客户端标识符(如会话cookie、ip地址或烘焙到应用程序客户端的唯一id)从服务器检索该信息

有一个名为的类,它以依赖于操作系统的方式存储此类信息。对于Windows,它将其存储在Windows注册表中。在其他操作系统上,可能在“特殊”位置有某种平面文件。这可能就是应用程序正在使用的内容。

可能就是这样。虽然它还显示了下载文件的主机ip地址。是的,我会启动wireshark,看看您的java客户端是否正在从服务器检索此信息。我认为您粘贴的代码没有那么重要,但看起来您找到了创建文件句柄以保存实际下载的代码。尝试在代码库中搜索ip地址,并将该数据跟踪到文件或web请求。查看ServiceManager类,它似乎是包含您要查找的逻辑的候选对象。查找IO;不要只读取所有150个文件——智能搜索。