2015-10-07 20 views
-1

我在讨论某些代码,并想知道是否有方法使用fileOutputStream按升序/降序来排序输出?使用fileOutputStream输出订单输出Java

代码:

public static void main(String[] args) throws IOException 
{ 
    String directory = "C:\\Users\\xxxx\\Desktop\\Files\\ex1.txt"; 
    String output = "C:\\Users\\xxxxx\\Desktop\\Files\\ex1_temp.txt"; 
    BufferedInputStream readFile = null; 
    BufferedOutputStream writeFile = null; 
     try { 
     readFile = new BufferedInputStream(new FileInputStream(directory)); 
     writeFile = new BufferedOutputStream(new FileOutputStream(output)); 
     int data; 
     while ((data = readFile.read()) != -1) { 
     //System.out.println(data); 
     //Collections.sort(data); 
     writeFile.write(data); 
     } 
     } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     } finally { 
     if (readFile != null) 
     readFile.close(); 
     if (writeFile != null) 
     writeFile.close(); 
     } 
    } 
+1

数据将按照您编写的顺序显示。目前还不清楚为什么你一次只能读/写一个字节,但基本上你需要读取数据,对数据进行分类,然后写下来。 –

+0

我在搞这个代码。我有一个需要读取的大文件> 2GB,并且正在读取处理这些文件没有任何内存问题的最佳方式是使用fileInput/outputstream。不知道这是多么真实,但总是值得尝试,只有这样才能学习:) –

+0

@MubeenHussain“但总是值得尝试,只有这样才能学会”看我不认识你,但这听起来危险地接近副本/粘贴程序员会说。请离开那条路。在尝试之前尝试理解事物,否则你怎么知道你的实验会期待什么? http://programmers.stackexchange.com/questions/87696/is-copy-paste-programming-bad – Gimby

回答

1

一般情况下,你需要有内存中的数据对它们进行排序,所以你不能使用流好了点。

如果需要对大数据进行排序,可以使用External sorting。在实现这样的算法时,你最终可能会使用流(以较小的块读取原始文件等),但单独的流无法帮助你,它们只是解决方案的一部分。