在文件a中有10个整数按从小到大的顺序排列,在其中插入一个整数,插入后数据仍然有序
用java写 求个代码
import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
public class cin_txt {
static void main(String args[]) {
try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw
/* 读入TXT文件 */
String pathname = "D:\\你的路径\\1.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径
File filename = new File(pathname); // 要读取以上路径的input。txt文件
InputStreamReader reader = new InputStreamReader(
new FileInputStream(filename)); // 建立一个输入流对象reader
BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
String line = "";
line = br.readLine();
//while (line != null) {
// line = br.readLine(); // 一次读入一行数据
//}
int toIns = 123; //要插入的整数
String[] snums = line.split(",");
String[] result = new String[snums.length + 1];
int j = 0;
for (int i = 0; i < snums.length + 1; i++)
{
if (toIns > Integer.parseInt(snums[i]) && j == 0) { result[i] = String.valueOf(toIns); j = 1; }
else if (j == 0) result[i] = snums[i];
else result[i] = snums[i- 1];
}
/* 写入Txt文件 */
File writename = new File("D:\\你的路径\\2.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
writename.createNewFile(); // 创建新文件
BufferedWriter out = new BufferedWriter(new FileWriter(writename));
for (int i = 0; i < result.length; i++)
{
if (i == 0) out.write(result[i]);
else out.write("," + result[i]);
}
out.flush(); // 把缓存区内容压入文件
out.close(); // 最后记得关闭文件
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行本程序之前,先创建一个1.txt的文本文件,里面单行用逗号分割地写入10个整数。保存到和程序一致的路径里。
运行结果输出到2.txt
您好,关于您的这个问题,这边有份资料您可以参考下:https://blog.csdn.net/Wyongkang/article/details/81102873
虽然这份不是java的,但是您可以参考下思路的呢。
将文件读取出来的数据转化为list,然后加数据进去,在sort一下,在写出
package com.haijie.java;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MainTest {
// 下面是你的源数据文件路径
static String mSrcFilePath = "D:\\src.txt";
// 下面是你的目标数据文件路径
static String mDstFilePath = "D:\\dst.txt";
static List<Integer> mSrcDataList = new ArrayList<>();
// 下面是你要插入的数据
static int mInsertNumber = 3;
public static void main(String[] args) {
// 读取文件中数据
readFile();
// 插入数据并排序
sortData();
// 排序结果写入文件
writeFile();
}
/**
* 读取文件数据
*/
private static void readFile() {
File file = new File(mSrcFilePath);
try {
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(file));
String tempString = null;
// 按行读取数据并存入List
while ((tempString = reader.readLine()) != null) {
mSrcDataList.add(Integer.parseInt(tempString));
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 数据排序
*/
private static void sortData() {
// 插入数据
mSrcDataList.add(mInsertNumber);
Collections.sort(mSrcDataList);
}
/**
* 结果写入文件
*/
private static void writeFile() {
File file = new File(mDstFilePath);
try {
if (!file.isFile()) {
file.createNewFile();
}
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
for (int data : mSrcDataList){
writer.write(data + "\r\n");
}
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}