用java实现书签列表

用java实现书签列表,java,swing,Java,Swing,我正在开发一个程序,它有三个JTextBox,我的用户可以输入并检查一些文本以获得正确的规则 因此,我想在我的程序中添加一个功能,我的用户可以在收藏夹列表中添加或删除他们最喜欢的文本,并可以在收藏夹列表中创建文件夹并在其中放置一些文本,例如FireFox或其他web浏览器中的书签库 我想使用RandomAccessFile将收藏列表保存为收藏源 我该如何实现它?有没有更好的方法来实施它?从随机存取文件有更好的方法吗 有人能帮我吗 谢谢。可能有很多方法。这完全取决于你想要实现什么 考虑使用Java

我正在开发一个程序,它有三个JTextBox,我的用户可以输入并检查一些文本以获得正确的规则

因此,我想在我的程序中添加一个功能,我的用户可以在收藏夹列表中添加或删除他们最喜欢的文本,并可以在收藏夹列表中创建文件夹并在其中放置一些文本,例如FireFox或其他web浏览器中的书签库

我想使用
RandomAccessFile
将收藏列表保存为收藏源

我该如何实现它?有没有更好的方法来实施它?从随机存取文件有更好的方法吗

有人能帮我吗


谢谢。

可能有很多方法。这完全取决于你想要实现什么

  • 考虑使用Java序列化机制。可以将书签集合序列化为文件。当你的应用程序启动时,你反序列化它,并获得相同的收集数据

    其优点是:简单易实现。缺点:你不能在文本编辑器或其他地方查看存储的书签。相同的类层次结构将用于加载序列化版本

  • XML是人类可读的,并且提供了简单的互操作性。其他应用程序将能够处理您的书签列表

    解析XML并将其加载到内存,然后创建内部对象结构通常需要更多的资源。尽管可以使用DOM随时遍历树,但它可能不如使用专用类的内部数据结构方便

  • 随机访问文件在固定记录大小的情况下效果最佳。这意味着书签的所有字段必须是固定长度的。例如,书签的名称是
    String
    。当您将其写入文件时,您将其存储为一个固定长度的数组,比如说20。这自动意味着,如果用户为书签指定长度大于20的名称,则剩余字符将丢失

    使用上面的注意事项也很容易实现。当然,这些记录的长度可能是可变的,但由于无法轻松计算特定记录的位置,因此您将失去对文件的随机访问权


  • Firefox使用JSON存储书签,并允许导出为HTML。你也可以探索这一点。

    可能有很多方法。这完全取决于你想要实现什么

  • 考虑使用Java序列化机制。可以将书签集合序列化为文件。当你的应用程序启动时,你反序列化它,并获得相同的收集数据

    其优点是:简单易实现。缺点:你不能在文本编辑器或其他地方查看存储的书签。相同的类层次结构将用于加载序列化版本

  • XML是人类可读的,并且提供了简单的互操作性。其他应用程序将能够处理您的书签列表

    解析XML并将其加载到内存,然后创建内部对象结构通常需要更多的资源。尽管可以使用DOM随时遍历树,但它可能不如使用专用类的内部数据结构方便

  • 随机访问文件在固定记录大小的情况下效果最佳。这意味着书签的所有字段必须是固定长度的。例如,书签的名称是
    String
    。当您将其写入文件时,您将其存储为一个固定长度的数组,比如说20。这自动意味着,如果用户为书签指定长度大于20的名称,则剩余字符将丢失

    使用上面的注意事项也很容易实现。当然,这些记录的长度可能是可变的,但由于无法轻松计算特定记录的位置,因此您将失去对文件的随机访问权


  • Firefox使用JSON存储书签,并允许导出为HTML。您也可以对此进行探索。

    您还可以在“首选项”中存储书签以及会话之间要保留的内容,
    请参见

    您还可以在“首选项”中存储书签以及会话之间要保留的内容,
    请参见

    @kleopatra我想要实现像FireFox这样的书签列表。@mehdi我不认为您会在这里得到一些代码:您必须自己编写。如果你遇到问题,你可以在这里提问,然后你会得到答案。@Alexey Ivanov不,我这里没有代码,我的问题是解决我的问题,最好的方法是什么?我是使用RandomAccessFile还是使用XML文件等?什么是JTextBox?我不知道基本JDK中有这个组件。别忘了接受一个答案:-)@kleopatra我想要实现书签列表,比如FireFox。@mehdi我想你不会在这里得到一些代码:你必须自己编写。如果你遇到问题,你可以在这里提问,然后你会得到答案。@Alexey Ivanov不,我这里没有代码,我的问题是解决我的问题,最好的方法是什么?我是使用RandomAccessFile还是使用XML文件等?什么是JTextBox?我不知道基本JDK中有这个组件。别忘了接受答案:-)@Paxinum我的意思是我在答案中忘记了它,并确认这是另一个选项。@Paxinum我的意思是我在答案中忘记了它,并确认这是另一个选项。-我使用SQLite RDBMS是出于我的目的(SQLiteJDBC for java)(hhtps://www.zentus.com/sqlitejdbc/).FireFox使用此RDBMS存储其数据。-我使用SQLite RDBMS是出于我的目的(SQLiteJDBC for java(hhtps://www.zentus.com/sqlitejdbc/).FireFox使用此RDBMS存储其数据。