1. java 中怎麼修改txt文件中某一行的內容
用臨時文件,按行讀源文件,不修改的行,直接輸出到臨時文件、要修改的行在修改後,再寫到臨時文件
2. 用java語言編寫一個程序修改一個txt文件
不早說這是rt文件.....
分析了下你給的例子,這個例子恰到好處,多一個空格在realPlayer里顯示就有問題.....我分析了下,realPlayer里顯示的東東的第一行有20個漢字(僅針對漢字和漢字標點,英語未知,未驗證),其餘行都是19個漢字......
這下好辦了,首先,你的txt里必須放的是主體部分的內容,不能有標題(標題需要手動在程序里加入,放在txt里也不好讀出來).....首先,把整段文字(從"傳說古代"到"也沒有見到")讀到一個字元串里,用trim()方法除去首尾的空格....然後截取前20個漢字作為第一行....給它加上<time begin="2"/> ...然後把後面的文字每隔19個漢字進行截取..依次加上<time begin="3,4,5.."/> ....然後不停地前後追加標簽就行了.......
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
public class SplitString extends JFrame implements ActionListener {
JPanel pane = new JPanel();
JLabel lbl = new JLabel("為此文件填寫標題:");
JScrollPane scrollPane;
JTextField text = new JTextField(20);
JButton buttOpen = new JButton("打開文件");
JButton buttTrans = new JButton("開始轉換");
JButton buttSave = new JButton("保存文件");
JTextArea area = new JTextArea(15, 30);
SplitString() {
//setLayout(new GridLayout(3, 2));
scrollPane = new JScrollPane(area);
text.setText("求千里馬");
pane.add(lbl);
pane.add(text);
pane.add(buttOpen);
pane.add(buttTrans);
pane.add(buttSave);
area.setLineWrap(true);
pane.add(scrollPane);
buttTrans.addActionListener(this);
buttOpen.addActionListener(this);
buttSave.addActionListener(this);
this.add(pane);
this.setVisible(true);
this.setBounds(30, 30, 370, 400);
}
public static void main(String[] args) {
SplitString ss = new SplitString();
}
/**
* 其實java的編碼就是unicode,所以截取中文的時候不會出現亂碼問題.
*/
public String splitFunction(String splitStr, int splitByte) {
String beiFen = splitStr;
splitStr = splitStr.substring(20);
String result = "";
int loopCount = (splitStr.length() % splitByte == 0) ? (splitStr
.length() / splitByte) : (splitStr.length() / splitByte + 1);
int m = 3;
for (int i = 1; i <= loopCount; i++) {
if (i == loopCount) {
result += "<time begin=\""
+ m
+ "\"/>"
+ splitStr.substring((i - 1) * splitByte, splitStr
.length());
} else {
result += "<time begin=\""
+ m
+ "\"/>"
+ splitStr.substring((i - 1) * splitByte,
(i * splitByte));
}
m++;
}
System.out.println();
System.out.println();
result = "<time begin=\"2\"/> " + beiFen.substring(0, 20) + result;
result = "<p>" + result + "</p>";
result = "<b><center><time begin=\"1\"/>" + text.getText()
+ "</center></b>\n" + result;
result = "<font face=\"system\" charset=\"gb2312\" >" + "<br/>\n"
+ result + "</font>";
result = "<window type=\"teleprompter\" height=\"280\" ration=\"55\" bgcolor=\"lime\" wordwrap=\"true\">\n"
+ result + "</window> ";
System.out.println(result);
return result;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == buttTrans) {
String aa = area.getText();
aa = " " + aa.trim();
String bb = splitFunction(aa, 19);
area.setText("");
area.setText(bb);
}
if (e.getSource() == buttOpen) {
//在這里,換成了JFileChooser,對圖像文件進行過濾...
//如果你非要用FileDialog,我就不知道怎麼過濾了.....
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"txt file", "txt");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
area.setText("");
File file = chooser.getSelectedFile();
BufferedReader input = new BufferedReader(new FileReader(
file));
String line = input.readLine();
while (line != null) {
area.append(line + "\n");
line = input.readLine();
}
} catch (Exception es) {
System.out.println("文件解析出錯");
}
}
}
if (e.getSource() == buttSave) {
if (area.getText().trim().equals("")) {
JOptionPane.showMessageDialog(this, "無法保存", "警告",
JOptionPane.ERROR_MESSAGE);
} else {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.CANCEL_OPTION) {
}
File fileName = fileChooser.getSelectedFile();
try {
FileWriter out = new FileWriter(fileName.getAbsolutePath());
out.write(area.getText());
out.close();
} catch (Exception es) {
JOptionPane.showMessageDialog(this, fileName.getName()
+ "文件不存在!\n請檢查所給的文件名是否正確!", "無效的文件名",
JOptionPane.ERROR_MESSAGE);
}
}
}
}
}
3. java 文本文件部分內容修改
整體思路如下:
1、用FileInputStream讀取文件內容;
2、修改內容,string操作;
3、用FileOutputStream寫文件內容;
參考例子如一下:
importjava.io.*;
publicclassTestBufferStream{
publicstaticvoidmain(String[]args){
try{
BufferedReaderin=newBufferedReader(newFileReader("in.txt"));
BufferedWriterout=newBufferedWriter(newFileWriter("out.txt"));
Strings=null;
while((s=in.readLine())!=null){
out.write(s);
out.newLine();
}
out.flush();
in.close();
out.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
4. java中讀出txt文件內容並更改怎麼寫入原txt文件
方法一:
讀取文件內容,
進行修改,
全部保存到內存中,
然後清空原文件,把內存寫回到原文件
適用范圍:
文件數據較小的時候,
這樣不怕內存溢出
方法二:
使用RandomAccessFile
,
模式設置文件可讀可寫
,
可以直接修改
方法三:
讀取文件內容
,
每次讀取一行,修改完畢就把該行字元串寫入到臨時文件中
,
然後從臨時文件寫會到原文件
5. java怎麼修改文本文件每行里的某一內容
1.把整個TXT文件讀取出來(FileReader)存到一個String對象里!
2.正則替換String對象,替換表達式。比如
String
a
=
"13730000666";
String
b
=
a.replaceAll("(\\d{4})(\\d{4})(\\d{3})","$1****$3");
System.out.println(b);
輸出:
1373****666
3.再將String對象寫回TXT文件。
6. java編程修改txt里的內容
使用Scanner掃描文本行,對行進行操作,然後寫到這個文件
:
Scanner s=new Scanner(new File("路徑"));
List<String> list=new ArrayList<String>();
while(s.hasNextLine()){
list.add(s.nextLine());
}
s.colse();
PrintWriter p=new PrintWriter(new File("路徑"));
for(int i=0;i<list.sixe();i++)
{
String[] array=list.get(i).spilt("##");//正則似乎是這個
//修改吧
array[0]=array[0]+"X";
String str=new StringBuffer().append(array[0]).append("##").append(array[1]).append("##").append(array[2]).toString();
p.println(str);
}
p.colse();
:
7. java如何刪除或者修改txt最後一行數據
給你個思路吧,代碼自己寫哦
方案1:
1、文檔不大的話,直接全部讀出來,就是一個字元串
2、定位到這個字元串的最後一個回車符,若這個回車符後面沒有內容,就再往前一個回車符,然後截取,再拼接上你新的字元串
方案2:
文檔大的話,用隨機讀取類RandomAccessFile,直接定位到最後,再往回找。。類似上面的,文檔大的話,這個方法比較適合。
8. 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);
}
}
9. java給txt文件寫入內容要求找到那一行然後修改某一個特定值怎麼做啊
java實現向txt每行增加一位數字,思路是這樣的:使用I/O操作每次讀取一行文字,使用string增加一個數字一,保存在緩存另一個list裡面,後接一個換行符,等到全部讀取完畢,在讀取list的內容,寫入txt文件裡面,示例如下:
package com.zeal.card; // 這里是我自己臨時用的包名,你自己改一下就好了
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class Demo {
/**
* 主方法
* @param args
*/
public static void main(String[] args) {
printData();
}
/**
* 讀取txt文檔第一行數據中的第3位到第9位,並輸出到控制台
*/
public static void printData() {
// 定義文本文件數組,這里是臨時演示用,請自己改寫
String[] txtFiles = {
"c:/a.txt",
"c:/b.txt",
"c:/c.txt",
};
// 遍歷文件
for (int i=0; i<txtFiles.length; i++) {
try {
// 得到文件
File file = new File(txtFiles[i]);
// 如果文件存在
if (file.exists()) {
// 建立緩沖包裝器
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
// 讀出一行(因為只是讀一行,沒必要遍歷全部文件內容)
String temp = in.readLine();
// 如果不為空,並且長度至少為9
if (temp != null) {
String txt = "一"+temp;//每行前面增加一個數字一。
System.out.println("取出數據:" + txt);
List li= new ArrayList();
List li= new ArrayList();
li.add(temp);
}
}
BufferedWriter in = null;
in = new BufferedWriter (new InputStreamWriter(new FileOutputStream(file)));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
10. 如何通過java實現對指定目錄下的txt文件進行增刪改查
代碼如下:
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.util.ArrayList;
importjava.util.List;
publicclassApp61{
publicstaticvoidmain(String[]args)throwsIOException{
//查找行輸出
Stringline=findFileLine("mylist.txt","abc");
System.out.println(line);
//刪除指定行
removeFileLine("mylist.txt",2);
}
staticvoidremoveFileLine(Stringfile,intline)throwsIOException{
List<String>lines=readFileLines(file);
lines.remove(line-1);
FileOutputStreamoutputStream=null;
=null;
BufferedWriterwriter=null;
try{
outputStream=newFileOutputStream(file);
streamWriter=newOutputStreamWriter(outputStream);
writer=newBufferedWriter(streamWriter);
for(Stringstr:lines){
writer.write(str+System.lineSeparator());
}
}finally{
if(writer!=null){
writer.close();
}
if(streamWriter!=null){
streamWriter.close();
}
if(outputStream!=null){
outputStream.close();
}
}
}
//查找行
staticStringfindFileLine(Stringfile,Stringkeywork)throwsIOException{
List<String>lines=readFileLines(file);
for(Stringline:lines){
if(line.contains(keywork)){
returnline;
}
}
return"";
}
//返迴文件所有行
staticList<String>readFileLines(Stringfile)throwsIOException{
List<String>lines=newArrayList<>();
FileInputStreaminputStream=null;
InputStreamReaderstreamReader=null;
BufferedReaderreader=null;
try{
inputStream=newFileInputStream(file);
streamReader=newInputStreamReader(inputStream);
reader=newBufferedReader(streamReader);
Stringline="";
while((line=reader.readLine())!=null){
lines.add(line);
}
}finally{
if(reader!=null){
reader.close();
}
if(streamReader!=null){
streamReader.close();
}
if(inputStream!=null){
inputStream.close();
}
}
returnlines;
}
}