我知道要用IO流,可是不知道怎么写代码,新手求指教!排序可以冒泡排序就行。

解决方案 »

  1.   


    //文件A和B放在项目的根目录
    FileReader reader = null;
    FileWriter writer = null;
    try
    {
    //读取文件A
    File fileA = new File("a.txt");
    reader = new FileReader(fileA);
    char[] cbuf = new char[1024];
    int num = reader.read(cbuf);
    //将读取到的字符数组转成字符串
    String str = new String(cbuf, 0, num);
    //用“|”将字符串分割成字符串数组
    String[] strNums = str.split("\\|");
    //将字符串数组转成整型数组
    int[] intNums = new int[strNums.length];
    for (int i = 0; i < intNums.length; i++)
    {
    intNums[i] = Integer.parseInt(strNums[i]);
    }
    //排序
    int tmp;
    for (int i = 0; i < intNums.length - 1; i++)
    {
    for (int j = i + 1; j < intNums.length; j++)
    {
    if (intNums[i] > intNums[j])
    {
    tmp = intNums[i];
    intNums[i] = intNums[j];
    intNums[j] = tmp;
    }
    }
    }
    //生成结果字符串
    String res = "";
    for (int i = 0; i < intNums.length; i++)
    {
    if (i == 0)
    {
    res = "" + intNums[i];
    }
    else
    {
    res += "|" + intNums[i];
    }
    }
    //写出结果到文件B
    System.out.println(res);
    File fileB = new File("b.txt");
    writer = new FileWriter(fileB);
    writer.write(res);
    writer.flush();
    }
    catch (FileNotFoundException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    catch (IOException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    finally
    {
    try
    {
    reader.close();
    writer.close();
    }
    catch (IOException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
      

  2.   

    from.txt 内容:please input the following ints into file:to.txt
    take care,after sort
    |25|36|89|126|20|24|98|66|88|79|
    run the code,and test ....执行代码后,to.txt内容:20 24 25 36 66 79 88 89 98 126 JAVA程序代码如下:import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.Path;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import static java.nio.file.StandardOpenOption.*;
    import java.util.EnumSet;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.util.Arrays;public class Test{
    public static void main(String[] args){
    Path from = Paths.get(System.getProperty("user.dir")).resolve("from.txt");//can set the from path...
    Path to = Paths.get(System.getProperty("user.dir")).resolve("to.txt");//can set the to path
    from = from.toAbsolutePath();
    to = to.toAbsolutePath();
    try{
    Files.createDirectories(from.getParent());
    Files.createDirectories(to.getParent());
    }catch(IOException e){
    e.printStackTrace();
    return;
    } try(BufferedReader reader = Files.newBufferedReader(from);
    BufferedWriter writer = Files.newBufferedWriter(to)){ String line = getResultLine(reader);

    String intsStr = getIntsStr(line); //save intsStr into file:to
    writer.write(intsStr.toCharArray()); }catch(IOException e){
    e.printStackTrace();
    return;
    }
    } private static String getIntsStr(String line){
    line = line.replaceAll("[|]+","|");
    line = line.replaceAll("^[|]|[|]$","");
    String[] strs = line.split("[|]");
    int[] ints = new int[strs.length];
    for(int i = 0 ; i < strs.length ; i ++){
    ints[i] = Integer.valueOf(strs[i]);
    }
    Arrays.sort(ints);
    String result = "";
    for(int i : ints){
    result += i + " ";
    }
    return result;
    } private static String getResultLine(BufferedReader reader){
    //suppost that the line matches regex '(\\|d[|])+'
    String resultLine;
    try{
    while((resultLine = reader.readLine()) != null){

    if(resultLine.matches("^(\\d|[|])+$")){
    return resultLine;
    }
    }
    }catch(IOException e){
    e.printStackTrace();
    System.exit(1);
    }
    return null;
    }
    }