问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java读取、修改、写入txt文件

发布网友 发布时间:2022-04-21 23:42

我来回答

5个回答

热心网友 时间:2023-11-22 14:00

模拟:先创建一个TXT文件(内容来自控制台);然后读取文件并在控制台输出;最后实现对新创建的TXT文件(的数据进行排序后)的复制。分别对应三个函数,调用顺序需要注意:创建、读取、复制。

效果图如下:绿色部分为控制台输入的内容(当输入end时,结束)

代码如下:

package com.;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Vector;

public class CreateAndReadTxt {
// 文件名称
public static String fileName = ".txt";
public static String newFileName = ".txt";
// 文件路径
public final static String URL = System.getProperty("user.dir");

// CreateAndReadTxt.class.getResource("/").getPath();

// 创建TXT文件
public static void createTxtFile(String fName, String fileContent) {
// 创建文件
fileName = fName + fileName;
File file = new File(fileName);
// 可以更改
file.setWritable(true);
// 判断当前路径下是否存在同名文件
boolean isExist = file.exists();
if (isExist) {
// 文件存在,删除
file.delete();
}
// 写入文件
try {
// 文件写入对象
FileOutputStream fos = new FileOutputStream(file);
// 输入流写入----默认字符为GBK
OutputStreamWriter osw = new OutputStreamWriter(fos);
// 写入
osw.write(fileContent);
// 写入完毕后关闭
osw.close();
System.out.println("成功创建文件:\t"+fileName);
} catch (IOException e) {
System.out.println("写入文件失败:\t" + e.getMessage());
}
}

// 阅读文件
public static void readFile(String fileName) {
System.out.println("开始读取文件:\t" + fileName);
// 产生文件对象
File file = new File(fileName);
//
try {
// 字符读取
FileReader fr = new FileReader(file);
// 缓冲处理
BufferedReader br = new BufferedReader(fr);
String str = "";
while ((str = br.readLine()) != null) {
System.out.println(str);
}
// 关闭
br.close();
fr.close();
} catch (FileNotFoundException e) {
System.out.println("读取文件失败:\t" + e.getMessage());
} catch (IOException e) {
System.out.println("读取文件失败:\t" + e.getMessage());
}
}
// 文件复制
public static void copyFile(String fromFileName,String toFileName){
//读取文件
File file = new File(fromFileName);
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
// 定义接收变量
Vector<Double> vec = new Vector<Double>();
String s = "";
while(null!=(s=br.readLine())){
vec.add(Double.parseDouble(s));
}
br.close();
fr.close();
// 保存到数组并进行排序
Double dou[] = new Double[vec.size()];
vec.toArray(dou);
Arrays.sort(dou);
System.out.println("========复制文件=========");
// 写入新文件
newFileName = "副本"+newFileName;
File newFile = new File(toFileName);
FileOutputStream fos = new FileOutputStream(newFile, true);
OutputStreamWriter osm = new OutputStreamWriter(fos);
for(Double d:dou){
osm.write(d.doubleValue()+"\n");
}
osm.close();
fos.close();
} catch (FileNotFoundException e) {
System.out.println("读取文件失败:\t" + e.getMessage());
} catch (IOException e) {
System.out.println("读取文件失败:\t" + e.getMessage());
}

}
public static void main(String[] args) {
/**
 * 构造数据
 */
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String s = "";
while(!("end".equals(s = scan.next()))){// 当输入end时,结束
sb.append(s);
sb.append("\n");
}
scan.close();
/**
 * 使用数据
 */
CreateAndReadTxt.createTxtFile("creat", sb.toString());
CreateAndReadTxt.readFile(fileName);
System.out.println(fileName);
CreateAndReadTxt.copyFile(fileName, newFileName);
CreateAndReadTxt.readFile(newFileName);
}

}

热心网友 时间:2023-11-22 14:00

把代码分成了三部分(读取数据、排序、写入数据),更方便阅读和理解。

排序可以直接使用java已实现的排序算法,也可以自己写排序算法。

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test {

    public static void main(String[] args) throws IOException {
        String file_a = "D:\\test\\a.txt";  // a.txt的路径
        String file_b = "D:\\test\\b.txt";  // b.txt的路径

        System.out.println("读取数据…");
        List<Double> list = read(file_a); // 从文件中读取数据

        System.out.println("排序…");
        sort(list); // 排序

        System.out.println("写入数据…");
        write(file_b, list); // 写入到文件

        System.out.println("over");
    }

    public static List<Double> read(String filePath) throws IOException {
        List<Double> list = new ArrayList<>();

        FileInputStream inputStream = new FileInputStream(filePath);
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

        // 读取文件中的内容,并转换为一个double类型
        // 此处默认txt中的格式为每行一个数字
        String line;
        while ((line = reader.readLine()) != null) {
            list.add(Double.parseDouble(line));
        }
        reader.close();

        return list;
    }

    public static void sort(List<Double> list) {
        Collections.sort(list);  // java已实现的排序算法,可以直接使用

        // 自己写排序算法(冒泡排序)
        //        for (int i = 0; i < list.size() - 1; i++) {
        //            for (int j = 0; j < list.size() - 1 - i; j++) {
        //                if (list.get(j) > list.get(j + 1)) {
        //                    double temp = list.get(j);
        //                    list.set(j, list.get(j + 1));
        //                    list.set(j + 1, temp);
        //                }
        //            }
        //        }
    }

    public static void write(String filePath, List<Double> list) throws IOException {
        FileOutputStream outputStream = new FileOutputStream(filePath);
        for (Double num : list) {
            outputStream.write((num + "\r\n").getBytes());
        }
        outputStream.flush();
        outputStream.close();
    }
}

热心网友 时间:2023-11-22 14:01

使用FileOutputStream流往一个文件里面写入数据
packagerestudy流; 
importjava.io.*;
 
publicclass TestFileOutputStream {
    publicstaticvoid main(String args[]) {
        intb = 0;
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = newFileInputStream("D:/restudyJAVA/restudy3/TestInputStream.txt");
            out = new FileOutputStream("D:/restudyJAVA/restudy3/TestFileOutputStream1.java");
            // 指明要写入数据的文件,如果指定的路径中不存在TestFileOutputStream1.java这样的文件,则系统会自动创建一个
            while ((b = in.read()) != -1) {
                out.write(b);
                // 调用write(int c)方法把读取到的字符全部写入到指定文件中去
            }
            in.close();
            out.close();
        } catch (FileNotFoundException e) {
            System.out.println("文件读取失败");
            System.exit(-1);// 非正常退出
        } catch (IOException e1) {
            System.out.println("文件复制失败!");
            System.exit(-1);
        }
        System.out
                .println("TestFileInputStream.java文件里面的内容已经成功复制到文件TestFileOutStream1.java里面");
    }
}

热心网友 时间:2023-11-22 14:01

使用FileOutputStream流往一个文件里面写入数据
packagerestudy流;
importjava.io.*;

publicclass TestFileOutputStream {
publicstaticvoid main(String args[]) {
intb = 0;
FileInputStream in = null;
FileOutputStream out = null;
try {
in = newFileInputStream("D:/restudyJAVA/restudy3/TestInputStream.txt");
out = new FileOutputStream("D:/restudyJAVA/restudy3/TestFileOutputStream1.java");
// 指明要写入数据的文件,如果指定的路径中不存在TestFileOutputStream1.java这样的文件,则系统会自动创建一个
while ((b = in.read()()) != -1) {
out.write(b);
// 调用write(int c)方法把读取到的字符全部写入到指定文件中去
}
in.close();
out.close();
} catch (FileNotFoundException e) {
System.out.println("文件读取失败");
System.exit(-1);// 非正常退出
} catch (IOException e1) {
System.out.println("文件复制失败!");
System.exit(-1);
}
System.out
.println("TestFileInputStream.java文件里面的内容已经成功复制到文件TestFileOutStream1.java里面");
}
}

热心网友 时间:2023-11-22 14:02

Java IO系统里读写文件使用Reader和Writer两个抽象类,Reader中read()和close()方法都是抽象方法。Writer中 write(),flush()和close()方法为抽象方法。子类应该分别实现他们。
Java IO已经为我们提供了三个方便的Reader的实现类,FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。
FileReader读txt文件例子
FileReader fr = new FileReader("D:/Test.txt");
int ch = 0;
while((ch = fr.read())!=-1 ){
System.out.print( (char)ch );
}
其中read()方法返回的是读取得下个字符。

InputStreamReader读txt文件例子
InputStream is = new FileInputStream(new File("D:/Test.txt"));
InputStreamReader fr = new InputStreamReader(is);
int ch = 0;
while((ch = fr.read())!=-1 ){
System.out.print((char)ch);
}
这和FileReader并没有什么区别,事实上在FileReader中的方法都是从InputStreamReader中继承过来的。 read()方法是比较好费时间的,如果为了提高效率,我们可以使用BufferedReader对Reader进行包装,这样可以提高读取得速度,我们可以一行一行的读取文本,使用 readLine()方法。
BufferedReader br = new BufferedReader(new FileReader("Test.txt")));
String data = br.readLine();//一次读入一行,直到读入null为文件结束
while( data!=null){
System.out.println(data);
data = br.readLine(); //接着读下一行
}
当你明白了如何用Reader来读取文本文件的时候那么用Writer写文件同样非常简单。有一点需要注意,当你写文件的时候,为了提高效率,写入的数据会先放入缓冲区,然后写入文件。因此有时候你需要主动调用flush()方法。

有读就有写,写文本文件可以使用PrintWriter,FileWriter,BufferedWriter。
FileWriter fw = new FileWriter("D:/Test.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:/Test1.txt"));
osw.write(s,0,s.length());
osw.flush();

PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:/Test2.txt")),true);
pw.println(s);

fw.close();
osw.close();
pw.close();
如果想接着写入某个文件。 声明时FileWriter fw = new FileWriter("log.txt",true);加个true就可以了。
File file = new File("D:/Test.txt");
File dest = new File("D:/new.txt");
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
BufferedWriter writer = new BufferedWriter(new FileWriter(dest));
String line = reader.readLine();
while(line!=null){
writer.write(line);
line = reader.readLine();
}
writer.flush();
reader.close();
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求大学生谈恋爱的各种弊端 大学生恋爱的利大于弊吗? 大学生谈恋爱的弊处 dnf现在站街16000的物攻 增加100物攻能张多少 家里养的蚕宝宝是要蜕皮了吗 富贵包硬和软的区别 【已完成】为什么腋窝突然有异味? 女生为什么有狐臭症状? 为什么会狐臭 万视宝这个牌子是做什么的?有人了解嘛? 关于Java的文件操作,想知道有注释那一行为什么数... java文件读写 java文件操作删除某一目录下指定类型的文件,代码... java文件操作怎样从文件中读出数据然后写入到另外... Java怎么实现文件拷贝 Java 文件流操作 Java中对文件进行读写操作的基本类是什么? java 文件夹操作 Java读写文件的几种方法 java文件操作 JAVA文件操作问题 【高额奖赏】用java实现文件操作。 烫头有多少种烫法 完了.烫发烫毁了.怎么办 我被烫头药水烧伤了怎么办? 烫头发被药水烧伤头皮 朋友在学校烫头发被烫毁了怎么维权 额头被烫发计烫伤怎么处理 昨天去烫头发,结果额头这里被烫的药水弄伤了,是... 去理发店烫发,额头被烫伤,个人判断大概属于轻微... java 的文件保存和读取问题? java底层是怎样对文件操作的 怎样解决网页显示不全不完整问题? 怎样使网页显示完整 怎么把网页的显示都放在同一页上 怎么样将电脑网页都放在一起 怎么将网页显示全部? 怎样才能全面的看到网页? 为什么让网页在浏览器里显示全部 如何保存网页里全部内容 怎么把网页放大 怎么保存完整的网页,且能够缩放后不失真? 用键盘如何将网页放大? 怎么禁止手机自动连接某一wifi 如何在可连接WIFI列表屏蔽一个WIFI 怎样才能屏蔽别人的WiFi信号 笔记本电脑怎么忽略一个wifi 怎样屏蔽个别人蹭网 如何屏蔽过忽略某个wifi信号 谁有能屏蔽别人wifi信号的软件?