導航:首頁 > 編程語言 > java讀文件寫文件

java讀文件寫文件

發布時間:2022-09-28 09:48:44

A. java 如何讀寫文件

這個問題問的太泛泛了,讀寫文件,首先了解什麼是輸入流和輸出流,什麼是位元組流,什麼是字元流。然後創建流對象,調用其方法read or write File

B. Java文件讀寫

實用的模糊(通配符)文件查找程序

1 import java.io.File;
2 import java.util.regex.Matcher;
3 import java.util.regex.Pattern;
4 import java.util.ArrayList;
5
6 /** *//**
7 * <p>Title: FileService </p> 8* <p>Description: 獲取文件 </p> 9* <p>Copyright: Copyright (c) 2007</p>
10* <p>Company: </p>
11* @author not attributable
12* @version 1.0
13*/
14public class FileService {
15 public FileService() {
16 }
17
18 /** *//**
19 * 在本文件夾下查找
20 * @param s String 文件名
21 * @return File[] 找到的文件
22 */
23 public static File[] getFiles(String s)
24 {
25 return getFiles("./",s);
26 }
27
28 /** *//**
29 * 獲取文件
30 * 可以根據正則表達式查找
31 * @param dir String 文件夾名稱
32 * @param s String 查找文件名,可帶*.?進行模糊查詢
33 * @return File[] 找到的文件
34 */
35 public static File[] getFiles(String dir,String s) {
36 //開始的文件夾
37 File file = new File(dir);
38
39 s = s.replace('.', '#');
40 s = s.replaceAll("#", "\\\\.");

C. 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);
}

}

D. java實現文件的讀寫,是叫啥

您好,你的問題,我之前好像也遇到過,以下是我原來的解決思路和方法,希望能幫助到你,若有錯誤,還望見諒!展開全部
Java.io包中包括許多類提供許多有關文件的各個方面操作。
1 輸入輸出抽象基類InputStream/OutputStream ,實現文件內容操作的基本功能函數read()、 write()、close()、skip()等;一般都是創建出其派生類對象(完成指定的特殊功能)來實現文件讀寫。在文件讀寫的編程過程中主要應該注意異常處理的技術。
2 FileInputStream/FileOutputStream:
用於本地文件讀寫(二進制格式讀寫並且是順序讀寫,讀和寫要分別創建出不同的文件流對象);
本地文件讀寫編程的基本過程為:
① 生成文件流對象(對文件讀操作時應該為FileInputStream類,而文件寫應該為FileOutputStream類);
② 調用FileInputStream或FileOutputStream類中的功能函數如read()、write(int b)等)讀寫文件內容;
③ 關閉文件(close())。
3 PipedInputStream/PipedOutputStream:
用於管道輸入輸出(將一個程序或一個線程的輸出結果直接連接到另一個程序或一個線程的輸入埠,實現兩者數據直接傳送。操作時需要連結);
4管道的連接:
方法之一是通過構造函數直接將某一個程序的輸出作為另一個程序的輸入,在定義對象時指明目標管道對象
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream(pInput);
方法之二是利用雙方類中的任一個成員函數 connect()相連接
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream();
pinput.connect(pOutput);
5 管道的輸入與輸出:
輸出管道對象調用write()成員函數輸出數據(即向管道的輸入端發送數據);而輸入管道對象調用read()成員函數可以讀起數據(即從輸出管道中獲得數據)。這主要是藉助系統所提供的緩沖機制來實現的。
6隨機文件讀寫:
RandomAccessFile類(它直接繼承於Object類而非InputStream/OutputStream類),從而可以實現讀寫文件中任何位置中的數據(只需要改變文件的讀寫位置的指針)。
隨機文件讀寫編程的基本過程為:
① 生成流對象並且指明讀寫類型;
② 移動讀寫位置;
③ 讀寫文件內容;
④ 關閉文件。

七里河團隊答疑助人,希望我的回答對你有所幫助非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!

E. Java文件讀寫

實用的模糊(通配符)文件查找程序
1 import java.io.File;
2 import java.util.regex.Matcher;
3 import java.util.regex.Pattern;
4 import java.util.ArrayList;
5
6 /** *//**
7 * <p>Title: FileService </p>
8* <p>Description: 獲取文件 </p>
9* <p>Copyright: Copyright (c) 2007</p>
10* <p>Company: </p>
11* @author not attributable
12* @version 1.0
13*/
14public class FileService {
15 public FileService() {
16 }
17
18 /** *//**
19 * 在本文件夾下查找
20 * @param s String 文件名
21 * @return File[] 找到的文件
22 */
23 public static File[] getFiles(String s)
24 {
25 return getFiles("./",s);
26 }
27
28 /** *//**
29 * 獲取文件
30 * 可以根據正則表達式查找
31 * @param dir String 文件夾名稱
32 * @param s String 查找文件名,可帶*.?進行模糊查詢
33 * @return File[] 找到的文件
34 */
35 public static File[] getFiles(String dir,String s) {
36 //開始的文件夾
37 File file = new File(dir);
38
39 s = s.replace('.', '#');
40 s = s.replaceAll("#", "\\\\.");
41 s = s.replace('*', '#');
42 s = s.replaceAll("#", ".*");
43 s = s.replace('?', '#');
44 s = s.replaceAll("#", ".?");
45 s = "^" + s + "$";
46
47 System.out.println(s);
48 Pattern p = Pattern.compile(s);
49 ArrayList list = filePattern(file, p);
50
51 File[] rtn = new File[list.size()];
52 list.toArray(rtn);
53 return rtn;
54 }
55
56 /** *//**
57 * @param file File 起始文件夾
58 * @param p Pattern 匹配類型
59 * @return ArrayList 其文件夾下的文件夾
60 */
61
62 private static ArrayList filePattern(File file, Pattern p) {
63 if (file == null) {
64 return null;
65 }
66 else if (file.isFile()) {
67 Matcher fMatcher = p.matcher(file.getName());
68 if (fMatcher.matches()) {
69 ArrayList list = new ArrayList();
70 list.add(file);
71 return list;
72 }
73 }
74 else if (file.isDirectory()) {
75 File[] files = file.listFiles();
76 if (files != null && files.length > 0) {
77 ArrayList list = new ArrayList();
78 for (int i = 0; i < files.length; i++) {
79 ArrayList rlist = filePattern(files[i], p);
80 if (rlist != null) {
81 list.addAll(rlist);
82 }
83 }
84 return list;
85 }
86 }
87 return null;
88 }
89
90 /** *//**
91 * 測試
92 * @param args String[]
93 */
94 public static void main(String[] args) {
95 }
96}

F. java 怎麼讀寫文件

IO中的 FileInputStream 和 FileOutputStream 屬於位元組輸入流和輸出流,前者是用於讀入文件,後者用於寫出文件

FileWriter 和 FileReader 屬於字元流 ,前者用於讀入文件,後者用於寫出文件

File file = new File("E:\\abc.txt");
try {
FileInputStream fis = new FileInputStream(file);
//此時文件已經讀入

FileOutputStream fos = new FileOutputStream("D:\\a.txt");
//此時是寫出文件
fis.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

G. JAVA文件的讀寫

public class ReadFromFile {
/**
* 以位元組為單位讀取文件,常用於讀二進制文件,如圖片、聲音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以位元組為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個位元組
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println("以位元組為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個位元組
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 讀入多個位元組到位元組數組中,byteread為一次讀入的位元組數
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}
/**
* 以字元為單位讀取文件,常用於讀文本,數字等類型的文件
*/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
System.out.println("以字元為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個字元
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// 對於windows下,\r\n這兩個字元在一起時,表示一個換行。
// 但如果這兩個字元分開顯示時,會換兩次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。
if (((char) tempchar) != '\r') {
System.out.print((char) tempchar);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("以字元為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個字元
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 讀入多個字元到字元數組中,charread為一次讀取字元數
while ((charread = reader.read(tempchars)) != -1) {
// 同樣屏蔽掉\r不顯示
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != '\r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 以行為單位讀取文件,常用於讀面向行的格式化文件
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行為單位讀取文件內容,一次讀一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null為文件結束
while ((tempString = reader.readLine()) != null) {
// 顯示行號
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 隨機讀取文件內容
*/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
System.out.println("隨機讀取一段文件內容:");
// 打開一個隨機訪問文件流,按只讀方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件長度,位元組數
long fileLength = randomFile.length();
// 讀文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 將讀文件的開始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次讀10個位元組,如果文件內容不足10個位元組,則讀剩下的位元組。
// 將一次讀取的位元組數賦給byteread
while ((byteread = randomFile.read(bytes)) != -1) {
System.out.write(bytes, 0, byteread);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (randomFile != null) {
try {
randomFile.close();
} catch (IOException e1) {
}
}
}
}
/**
* 顯示輸入流中還剩的位元組數
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("當前位元組輸入流中的位元組數為:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}

H. java文件讀寫

從你函數的簽名來看,推測你做的是文件復制操作。

這樣復制文件,在緩存分配和計算方面,都存在風險,你可能沒有正確計算這些值或者strbuffer
超出范圍。可以在讀寫源文件的同時寫入到新文件,例如:

(Filesource,Filedest)
throwsIOException{
InputStreaminput=null;
OutputStreamoutput=null;
try{
input=newFileInputStream(source);
output=newFileOutputStream(dest);
byte[]buf=newbyte[1024];
intbytesRead;
while((bytesRead=input.read(buf))>0){
output.write(buf,0,bytesRead);
}
}finally{
input.close();
output.close();
}
}

另外還有3種復制文件方法,可以參見:

4 Ways to Copy File in Java

http://examples.javacodegeeks.com/core-java/io/file/4-ways-to--file-in-java/

I. java讀寫同一個文件

在使用BufferedReader和BufferedWriter 要注意:

讀不會修改文件,所以同一個file聲明多個reader來讀,沒有問題,

但是寫會修改文件,所以在對一個file綁定了writer之後,不能再讀了,也不能再聲明其它writer到這個file,所以可以說writer是獨占的,

如果你調試一下 可以發現,在聲明writer之後,file所指定的文件內容會變成空,

所以你將

BufferedWriter writer = new BufferedWriter(new FileWriter(file)); 提到read之前會報NullPointerException


希望能給樓主幫助~~

純手工打造,還請樓主採納~~


下面是多個reader一個writer的例子:

packagetest;

importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;

publicclassTest{
publicstaticvoidmain(String[]args){
Filefile=newFile("D:/test.txt");
try{
BufferedReaderreader=newBufferedReader(newFileReader(file));
BufferedReaderreader2=newBufferedReader(newFileReader(file));

Stringline=reader.readLine();
Stringline2=reader2.readLine();
System.out.println(line);
System.out.println(line2);

BufferedWriterwriter=newBufferedWriter(newFileWriter(file));

writer.write(line);

writer.flush();
reader.close();
writer.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
閱讀全文

與java讀文件寫文件相關的資料

熱點內容
壓縮因子定義 瀏覽:968
cd命令進不了c盤怎麼辦 瀏覽:214
葯業公司招程序員嗎 瀏覽:974
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:229
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328