黑马程序员技术交流社区

标题: 文件读取后对字符排序后存入的问题 [打印本页]

作者: 冯大卫    时间: 2014-9-3 22:25
标题: 文件读取后对字符排序后存入的问题
package com.itheima;
/**
* 5、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。即b.txt中的文件内容应为“abcd…………..”这样的顺序。
* @author
* @date 2014/04/19
*/
import java.io.*;
import java.util.*;
class t2
{
        public static void main(String[] args)throws Exception
        {
                FileReader file_source=null;
                FileWriter file_destination=null;
                try
                {
                        file_source=new FileReader("D:/a.txt");
                        file_destination=new FileWriter("D:/b.txt");
                        char[] buf=new char[1024];
                        int len=0;
                        while((len=file_source.read(buf))!=-1)
                        {        
//                                Sort(buf);
                                Arrays.sort(buf);
                                System.out.println(buf);
                                
                                file_destination.write(buf,0,len);
                                file_destination.flush();
                        }
                }
                catch(IOException e)
                {
                        e.printStackTrace();
                }
                finally
                {
                        try
                        {
                                if(file_source!=null)
                                        file_source.close();
                        }
                        catch(IOException e)
                        {
                                e.printStackTrace();
                        }
                        try
                        {
                                if(file_destination!=null)
                                        file_destination.close();
                        }
                        catch(IOException e)
                        {
                                e.printStackTrace();
                        }
                        
                }
        }
/*        public static void Swap(char a,char b)
        {
                char ch=a;
                a=b;
                b=ch;
        }
        public static void Sort(char []s)
        {
                int j,k,flag;
                flag=s.length;
                while(flag>0)
                {
                        k=flag;
                        flag=0;
                        for(j=1;j<k;j++)
                                if()
                                {
                                        Swap(s[j-1],s[j]);
                                        flag=j;
                                }
                }
        }*/
}
在D盘下建一个a.txt,存入bcdeadferwplkou,然后运行此代码,可以执行,但是为什么b.txt中没有数据!刷新了也关闭了!
作者: 谢建平    时间: 2014-9-4 08:32
那个重新排序是不对的    char[] buf=new char[1024];   比如你抓了5个字符  你一排列    其实不是只这5个在排的   后面还有一堆 默认值也参与排队了。  排队后 你在输出这个数组的前5字符      
作者: Java黑马    时间: 2014-9-4 10:37
这是我写的程序,运行应该没什么问题
package csdn.a;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

public class IOTest {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
                // TODO Auto-generated method stub
                File file=new File("c:\\a.txt");//创建File对象
                write(file);//在硬盘上建立对象并写入数据,如果存在的话就不用这一步了
                Reader fr=new FileReader(file);//读取硬盘上的文本对象
                List<String> list=new ArrayList<String>();//建立List集合装入文本中的数据
                int ch=0;
                while((ch=fr.read())!=-1){
                        String s=new String((char)ch+"");
                        list.add(s);
                }
                Collections.sort(list);//对集合中的数据进行自然排序并打印输出
                for(int x=0;x<list.size();x++){
                        System.out.println(list.get(x));
                }
                /*Iterator<String> it=list.iterator();
                while(it.hasNext()){
                        System.out.println(it.next());
                }*/
               
        }
        public static void write(File file)throws Exception//在硬盘上建立对象并写入数据,如果存在的话就不用这一步了
        {
                if(!file.exists()){
                        file.createNewFile();
                }
                Writer fw=new FileWriter(file);
                fw.write("dfbacehg");
                fw.flush();
                fw.close();
        }
       

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2