Java基础面试操作题:读取该文件内容,并按照自…

2018-06-18 03:46:16来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

package com.swift;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class IO_sort_content {

    public static void main(String[] args) {
        /*
         * 已知文件 a.txt 文件中的内容为“bcdeadferwplkou”,
         * 请编写程序读取该文件内容,并按照自然顺序排序后输出到 b.txt 文件中。
         * 即 b.txt 中的文件内容应为“abcd…………..”这样的顺序。
         */

            try {
                FileInputStream fis=new FileInputStream("E:\\neck\\a.txt");
                FileOutputStream fos=new FileOutputStream("E:\\neck\\b.txt");
                byte[] kilo=new byte[4*1024];
                int len;
                    while((len=fis.read(kilo))!=-1) {
                        fos.write(kilo,0,len);
                        fos.flush();
                    }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }

}

上面只是做到读取并写入另一个文件,并没有进行排序

下面是排序的方法

 

package com.swift;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class IO_sort_content {

    public static void main(String[] args) {
        /*
         * 已知文件 a.txt 文件中的内容为“bcdeadferwplkou”,
         * 请编写程序读取该文件内容,并按照自然顺序排序后输出到 b.txt 文件中。
         * 即 b.txt 中的文件内容应为“abcd…………..”这样的顺序。
         */

            
            try {
                BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("E:\\neck\\a.txt"),"GB2312"));
                StringBuffer sb=new StringBuffer();
                String str;
                    while((str=br.readLine())!=null) {
                        sb.append(str);
                    }
                    String source=sb.toString();
                    char[] src=source.toCharArray();
                    Arrays.sort(src);
                    String destination=String.valueOf(src);
                    System.out.println(destination);
                    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:\\neck\\b.txt"),"GB2312"));
                    bw.write(destination);
                    bw.flush();
                    
                    sb.setLength(0);
                    sb.append(destination);
                    System.out.println(sb.reverse());//逆序
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }

}

 也可以把字节流直接排序了,比较精简

package com.swift;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class IO_sort_content {

    public static void main(String[] args) {
        /*
         * 已知文件 a.txt 文件中的内容为“bcdeadferwplkou”, 请编写程序读取该文件内容,并按照自然顺序排序后输出到 b.txt 文件中。 即
         * b.txt 中的文件内容应为“abcd…………..”这样的顺序。
         */

        try {
            FileInputStream fis = new FileInputStream("E:\\neck\\a.txt");
            FileOutputStream fos = new FileOutputStream("E:\\neck\\b.txt");
            int len;
            byte[] arr = new byte[fis.available()];
            while ((len = fis.read(arr)) != -1) {
                System.out.println("排序....");
                Arrays.sort(arr);
                System.out.println("写入...");
                fos.write(arr,0,len);
                fos.flush();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java学习笔记46(多线程三:线程之间的通信)

下一篇:Java入门篇(二)——Java语言基础(上)