小编Luc*_*lli的帖子

在java中对巨大的file.txt进行排序

我正在使用一个非常大的文本文件(755Mb).我需要对行(约1890000)进行排序,然后将它们写回另一个文件中.

我已经注意到有一个起始文件的讨论与我的相似: 排序行根据其中的单词作为键

问题是我无法将行存储在内存中的集合中,因为我得到了Java堆空间异常(即使我最大限度地扩展它)..(已经尝试过!)

我不能用excel打开它并使用排序功能,因为文件太大而且无法完全加载..

我想过使用DB ..但是我认为编写所有行然后使用SELECT查询它在执行时间方面太长了......我错了吗?

任何提示赞赏提前谢谢

java sorting lines text-files

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

如何使用sftp get命令重命名文件

有没有办法在sftp中使用"get"命令获取文件夹而不获取"无法下载非常规文件:..../dir_name"或获取文件并使用其他名称保存?

在第二个选项中我的意思是:

sftp> ls
hello.txt
sftp> get hello.txt (+ something) byebye.txt
sftp> exit
Run Code Online (Sandbox Code Playgroud)

在我的目录中我有byebye.txt.

linux sftp command rename

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

尝试使用Apache POI编写excel文件导致OutOfMemoryError

我有一个编写excel文件的程序.它使用Apache POI编写excel 2007文件(我有超过256个colums,所以我必须使用它).该计划有效.我已经在非常小的文件上测试了它,但是如果我使用更多的行,它会耗尽内存.

这是堆栈跟踪:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.io.ByteArrayOutputStream.write(Unknown Source)
    at org.apache.poi.openxml4j.opc.internal.MemoryPackagePartOutputStream.write(MemoryPackagePartOutputStream.java:88)
    at org.apache.xmlbeans.impl.store.Cursor._save(Cursor.java:590)
    at org.apache.xmlbeans.impl.store.Cursor.save(Cursor.java:2544)
    at org.apache.xmlbeans.impl.values.XmlObjectBase.save(XmlObjectBase.java:212)
    at org.apache.poi.xssf.usermodel.XSSFSheet.write(XSSFSheet.java:2480)
    at org.apache.poi.xssf.usermodel.XSSFSheet.commit(XSSFSheet.java:2439)
    at org.apache.poi.POIXMLDocumentPart.onSave(POIXMLDocumentPart.java:196)
    at org.apache.poi.POIXMLDocumentPart.onSave(POIXMLDocumentPart.java:200)
    at org.apache.poi.POIXMLDocument.write(POIXMLDocument.java:204)
    at model.Conversione.traduzioneFile(Conversione.java:219)
    at model.Main.scriviFile(Main.java:75)
    at model.Main.main(Main.java:51)
Run Code Online (Sandbox Code Playgroud)

在我写"workbook.write(fileOut)"的行发生错误(根据堆栈跟踪),其中fileOut是FileOutputStream.这意味着所有java对象显然有足够的内存来存储excel文件,但出于某种原因,因为它写入硬盘它必须占用更多的内存.

只是告诉你,我试图将java堆大小增加到1 gig(通过添加-Xms128m -Xmx1024m),但是仍然没有做到tric.

救命!吴


代码示例:

..

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

//I'M USING A DATABASE 
import DAO.EventoDAO;
import DAO.ParametroDAO;

public class Conversion {

public static void traduzioneFile(File read, File write){
    FileOutputStream fos=null;


    try { …
Run Code Online (Sandbox Code Playgroud)

java memory excel apache-poi

0
推荐指数
2
解决办法
6637
查看次数

限制jscrollpanel中显示的行

我有一个JTextArea包装在一个JScrollPane中,我用它来记录我的应用程序的输出.当应用程序生成许多行时,文本区域中的行数增长非常快,并且滚动几乎不可见.我想要一个像Eclipse控制台一样的文本区域.我的意思是......带有垂直滚动的文本区域但是当使用滚动时我最多只能显示200行.

这是我正在使用的可运行代码:

    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.border.EmptyBorder;
    import javax.swing.text.DefaultCaret;


    public class WindowLog extends JFrame {;
    private JPanel contentPane;
    private static JTextArea textArea = new JTextArea();

    public static void run() {
        try {
            WindowLog frame = new WindowLog();
            frame.setVisible(true);     
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void writeText(JTextArea ta, String s){
        DefaultCaret caret = (DefaultCaret)ta.getCaret();
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
        ta.append(s);
    }   

    /**
     * Create the panel.
     */
    public WindowLog() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, …
Run Code Online (Sandbox Code Playgroud)

java swing rows jscrollpane jtextarea

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