IO流——文件中读取数字并排序输出到另一个文件中
2017-01-22 本文已影响626人
扒块腹肌
在一个文件中写入10个数字。使用文件输入流将这10个数读到内存中,然后进行排序,并将排好序的数字输出到另一个文件中
原文本:
排序输出文本.png程序如下
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*整体思路;
* 1.字符流读写文本数据
* 2.构造字符串缓冲区接收字符串
* 3.正则表达式 用空格拆分读取到的字符串
* 4.冒泡排序
*/
/**
* @author Administrator
*
*/
public class Java_4
{
public static void main(String[] args)
{
BufferedReader readNumber = null;
FileWriter writeNumber = null;
String string = null;
StringBuffer stringBuffer = null;
String[] str = null;
try
{
readNumber = new BufferedReader(new FileReader("1.txt"));
writeNumber = new FileWriter("2.txt");
stringBuffer = new StringBuffer();// 构造字符串缓冲区
// 读入文件内容
while ((string = readNumber.readLine()) != null)
{
System.out.println("文件内容: " + string);
// 根据空格拆分此字符串
str = string.split(" ");
for (int k = 0; k < str.length - 1; k++)
{// 遍历字符串数组 转换为int数组 并比较相邻数的大小
for (int j = k + 1; j < str.length; j++)
{
// 创建 Integer对象表示 str[i]所指示的int值 ,大数放左边
if (Integer.valueOf(str[k]) < Integer.valueOf(str[j]))
{
String temp = str[k];
str[k] = str[j];
str[j] = temp;
}
}
}
// 排序完成,逐个追加到StringBuffer序列中
for (int k = 0; k < str.length; k++)
{
stringBuffer.append(str[k] + " ");
}
// 返回字符串本身,写入文件
writeNumber.write(stringBuffer.toString());
writeNumber.flush();
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (readNumber != null)
{
try
{
readNumber.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (writeNumber != null)
{
try
{
writeNumber.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
输出文本: