Ⅰ java如何删除或者修改txt最后一行数据
给你个思路吧,代码自己写哦
方案1:
1、文档不大的话,直接全部读出来,就是一个字符串
2、定位到这个字符串的最后一个回车符,若这个回车符后面没有内容,就再往前一个回车符,然后截取,再拼接上你新的字符串
方案2:
文档大的话,用随机读取类RandomAccessFile,直接定位到最后,再往回找。。类似上面的,文档大的话,这个方法比较适合。
Ⅱ Java 如何对读入的txt文件进行修改啊。。。
用BufferedReader读入文件的每一行,然后跳过前四位。
如果第六位开始的名字匹配了,就修改从该行起始位开始的第九位(也就是分数开始的位置)。至于输出修改后的内容到文件,可以参考:
http://hi..com/tejingdream/blog/item/4d7f7178a900d9e62f73b34e.html
如果文件内容是英文就比较简单,可以用java的正则表达式进行名字的匹配,如果是中文,就比较麻烦了,需要知道确定名字的ascii编码。
Ⅲ java如何删除或者修改txt最后一行数据
给你个思路吧,代码自己写哦
方案1:
1、文档不大的话,直接全部读出来,就是一个字符串
2、定位到这个字符串的最后一个回车符,若这个回车符后面没有内容,就再往前一个回车符,然后截取,再拼接上你新的字符串
方案2:
文档大的话,用随机读取类RandomAccessFile,直接定位到最后,再往回找。。类似上面的,文档大的话,这个方法比较适合。
Ⅳ java 中怎么修改txt文件中某一行的内容
用临时文件,按行读源文件,不修改的行,直接输出到临时文件、要修改的行在修改后,再写到临时文件
Ⅳ java如何读取并修改txt文件
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();
}
Ⅵ java写入txt文件 想要修改txt文件每一行的第一个数字 加一就好
java实现向txt每行增加一位数字,思路是这样的:使用I/O操作每次读取一行文字,使用string增加一个数字一,保存在缓存另一个list里面,后接一个换行符,等到全部读取完毕,在读取list的内容,写入txt文件里面,示例如下:
packagecom.zeal.card;//这里是我自己临时用的包名,你自己改一下就好了
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.InputStreamReader;
publicclassDemo{
/**
*主方法
*@paramargs
*/
publicstaticvoidmain(String[]args){
printData();
}
/**
*读取txt文档第一行数据中的第3位到第9位,并输出到控制台
*/
publicstaticvoidprintData(){
//定义文本文件数组,这里是临时演示用,请自己改写
String[]txtFiles={
"c:/a.txt",
"c:/b.txt",
"c:/c.txt",
};
//遍历文件
for(inti=0;i<txtFiles.length;i++){
try{
//得到文件
Filefile=newFile(txtFiles[i]);
//如果文件存在
if(file.exists()){
//建立缓冲包装器
BufferedReaderin=null;
in=newBufferedReader(newInputStreamReader(newFileInputStream(file)));
//读出一行(因为只是读一行,没必要遍历全部文件内容)
Stringtemp=in.readLine();
//如果不为空,并且长度至少为9
if(temp!=null){
Stringtxt="一"+temp;//每行前面增加一个数字一。
System.out.println("取出数据:"+txt);
Listli=newArrayList();
Listli=newArrayList();
li.add(temp);
}
}
BufferedWriterin=null;
in=newBufferedWriter(newInputStreamWriter(newFileOutputStream(file)));
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
}
Ⅶ java中读出txt文件内容并更改怎么写入原txt文件
方法一:
读取文件内容,
进行修改,
全部保存到内存中,
然后清空原文件,把内存写回到原文件
适用范围:
文件数据较小的时候,
这样不怕内存溢出
方法二:
使用RandomAccessFile
,
模式设置文件可读可写
,
可以直接修改
方法三:
读取文件内容
,
每次读取一行,修改完毕就把该行字符串写入到临时文件中
,
然后从临时文件写会到原文件
Ⅷ java怎么来修改txt中的内容
public class update_txt {
public static void main(String[] args) {
File file = new File("D:\\update_txt.txt");
try
{
if(file.isFile()!=true)
{
file.createNewFile();
}
//读入数据
BufferedReader buff = new BufferedReader(new FileReader(file));
String manager = buff.readLine();
Vector newtxt = new Vector();
while(manager!=""&&manager!=null)
{
System.out.println(manager);
if(manager.split("#")[0].equals("admin3"))
{
newtxt.add("admin3#3#超级管理员");
}
else
{
newtxt.add(manager);
}
manager=buff.readLine();
}
buff.close();
//写入数据
BufferedWriter weiter = new BufferedWriter(new FileWriter(file));
for(int i=0;i<newtxt.size();i++)
{
weiter.write(newtxt.get(i).toString());
weiter.newLine();
}
weiter.flush();
weiter.close();
}catch(Exception e)
{
e.printStackTrace();
}
}}
Ⅸ java读取、修改、写入txt文件
模拟:先创建一个TXT文件(内容来自控制台);然后读取文件并在控制台输出;最后实现对新创建的TXT文件(的数据进行排序后)的复制。分别对应三个函数,调用顺序需要注意:创建、读取、复制。
效果图如下:绿色部分为控制台输入的内容(当输入end时,结束)
packagecom.;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.OutputStreamWriter;
importjava.util.Arrays;
importjava.util.Scanner;
importjava.util.Vector;
publicclassCreateAndReadTxt{
//文件名称
publicstaticStringfileName=".txt";
publicstaticStringnewFileName=".txt";
//文件路径
publicfinalstaticStringURL=System.getProperty("user.dir");
//CreateAndReadTxt.class.getResource("/").getPath();
//创建TXT文件
publicstaticvoidcreateTxtFile(StringfName,StringfileContent){
//创建文件
fileName=fName+fileName;
Filefile=newFile(fileName);
//可以更改
file.setWritable(true);
//判断当前路径下是否存在同名文件
booleanisExist=file.exists();
if(isExist){
//文件存在,删除
file.delete();
}
//写入文件
try{
//文件写入对象
FileOutputStreamfos=newFileOutputStream(file);
//输入流写入----默认字符为GBK
OutputStreamWriterosw=newOutputStreamWriter(fos);
//写入
osw.write(fileContent);
//写入完毕后关闭
osw.close();
System.out.println("成功创建文件: "+fileName);
}catch(IOExceptione){
System.out.println("写入文件失败: "+e.getMessage());
}
}
//阅读文件
publicstaticvoidreadFile(StringfileName){
System.out.println("开始读取文件: "+fileName);
//产生文件对象
Filefile=newFile(fileName);
//
try{
//字符读取
FileReaderfr=newFileReader(file);
//缓冲处理
BufferedReaderbr=newBufferedReader(fr);
Stringstr="";
while((str=br.readLine())!=null){
System.out.println(str);
}
//关闭
br.close();
fr.close();
}catch(FileNotFoundExceptione){
System.out.println("读取文件失败: "+e.getMessage());
}catch(IOExceptione){
System.out.println("读取文件失败: "+e.getMessage());
}
}
//文件复制
publicstaticvoidFile(StringfromFileName,StringtoFileName){
//读取文件
Filefile=newFile(fromFileName);
try{
FileReaderfr=newFileReader(file);
BufferedReaderbr=newBufferedReader(fr);
//定义接收变量
Vector<Double>vec=newVector<Double>();
Strings="";
while(null!=(s=br.readLine())){
vec.add(Double.parseDouble(s));
}
br.close();
fr.close();
//保存到数组并进行排序
Doubledou[]=newDouble[vec.size()];
vec.toArray(dou);
Arrays.sort(dou);
System.out.println("========复制文件=========");
//写入新文件
newFileName="副本"+newFileName;
FilenewFile=newFile(toFileName);
FileOutputStreamfos=newFileOutputStream(newFile,true);
OutputStreamWriterosm=newOutputStreamWriter(fos);
for(Doubled:dou){
osm.write(d.doubleValue()+"
");
}
osm.close();
fos.close();
}catch(FileNotFoundExceptione){
System.out.println("读取文件失败: "+e.getMessage());
}catch(IOExceptione){
System.out.println("读取文件失败: "+e.getMessage());
}
}
publicstaticvoidmain(String[]args){
/**
*构造数据
*/
Scannerscan=newScanner(System.in);
StringBuildersb=newStringBuilder();
Strings="";
while(!("end".equals(s=scan.next()))){//当输入end时,结束
sb.append(s);
sb.append("
");
}
scan.close();
/**
*使用数据
*/
CreateAndReadTxt.createTxtFile("creat",sb.toString());
CreateAndReadTxt.readFile(fileName);
System.out.println(fileName);
CreateAndReadTxt.File(fileName,newFileName);
CreateAndReadTxt.readFile(newFileName);
}
}