導航:首頁 > 編程語言 > java流和文件

java流和文件

發布時間:2024-07-14 12:35:07

A. 鐢╦ava io嫻佹妸澶氫釜txt鏂囦歡鐨勫唴瀹瑰悎騫跺埌涓涓鏂囦歡閲

鍙傝冧唬鎮勬槬鐮佸備笅錛

public static void mergeFiles(String outFile, String[] files)

絎涓涓鍙傛暟鏄鍚堝苟鍚庣敓鎴愭枃浠剁殑璺鏃╄繍鏋濆緞

絎浜屼釜鍙傛暟鏄浣犻渶瑕佸悎騫剁殑鏂囨湰鏂囦歡鍒楄〃

浠g爜錛

java">packageorg.lq.util;
importstaticjava.lang.System.out;

importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.nio.ByteBuffer;
importjava.nio.CharBuffer;
importjava.nio.channels.FileChannel;
importjava.nio.charset.Charset;
importjava.nio.charset.CharsetDecoder;
importjava.nio.charset.CharsetEncoder;
importjava.util.Arrays;


publicclassMergeFile{
publicstaticfinalintBUFSIZE=1024*8;
publicstaticvoidmergeFiles(StringoutFile,String[]files){
FileChanneloutChannel=null;
out.println("Merge"+Arrays.toString(files)+"into"+outFile);
try{
outChannel=newFileOutputStream(outFile).getChannel();
for(Stringf:files){
Charsetcharset=Charset.forName("utf-8");
CharsetDecoderchdecoder=charset.newDecoder();
CharsetEncoderchencoder=charset.newEncoder();
FileChannelfc=newFileInputStream(f).getChannel();
ByteBufferbb=ByteBuffer.allocate(BUFSIZE);
CharBuffercharBuffer=chdecoder.decode(bb);
ByteBuffernbuBuffer=chencoder.encode(charBuffer);
while(fc.read(nbuBuffer)!=-1){

bb.flip();
nbuBuffer.flip();
outChannel.write(nbuBuffer);
bb.clear();
nbuBuffer.clear();
}
fc.close();
}
out.println("Merged!!");
}catch(IOExceptionioe){
ioe.printStackTrace();
}finally{
try{if(outChannel!=null){outChannel.close();}}catch(IOException闄嗘晱ignore){}
}
}
}

B. Java字元流和位元組流對文件操作的區別

一、java的IO流分兩種流 :
1、位元組流 InputStream OutputStream
2、字元流 Reader Writer
他們都是抽象類
二、他們的區別:

1、字元流處理的單元為2個位元組的Unicode字元,分別操作字元、字元數組或字元串,而位元組流處理單元為1個位元組,操作位元組和位元組數組。所以字元流是由Java虛擬機將位元組轉化為2個位元組的Unicode字元為單位的字元而成的,所以它對多國語言支持性比較好!如果是音頻文件、圖片、歌曲,就用位元組流好點,如果是關繫到中文(文本)的,用字元流好點.
所有文件的儲存是都是位元組(byte)的儲存,在磁碟上保留的並不是文件的字元而是先把字元編碼成位元組,再儲存這些位元組到磁碟。在讀取文件(特別是文本文件)時,也是一個位元組一個位元組地讀取以形成位元組序列.
2、位元組流可用於任何類型的對象,包括二進制對象,而字元流只能處理字元或者字元串; 位元組流提供了處理任何類型的IO操作的功能,但它不能直接處理Unicode字元,而字元流就可以。
位元組流轉換成字元流可以用 InputSteamReader OutputStreamWriter
//位元組流轉換成InputStreamReader
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
//InputStreamReader 轉換成帶緩存的bufferedReader
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);

C. java 中簡述使用流進行讀寫文本文件的步驟

讀寫是兩個不同的分支,通常都是分開單獨使用的。

D. java我用流來復制文件可是老是拒絕訪問怎麼回事

兄弟,首先window環境下文件目錄是不能用Java流來讀取的,目錄是使用mkdir或者mkdirs方法創建的。
第二你復制的時候BufferedInputStream的read() 每次是讀取一個位元組,你用int來接收,這樣會隱式轉型成4個位元組,復制的文件會不對。
第三文件讀取的截至調試是返回的 -1 , 不是 1,也不是0
第四當然能正確關閉流這是對的,但是緩存流關閉流的時候,並沒有關閉FileInputStream和FileOutputStream,所以建議在關閉緩存流之前先關閉掉FileInputStream和FileOutputStream。
文件復制我是這么寫的:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MyFile extends File {
private List<MyFile> childFiles;

public MyFile(String pathname) {
super(pathname);
}

public MyFile(File file) {
super(file.getAbsolutePath());
}
public List<MyFile> getChildFiles() {
return childFiles;
}
public void setChildFiles(List<MyFile> childFiles) {
this.childFiles = childFiles;
}

}
------------------------------------------------------------------------------

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class TestFile {
@Test
public void fileTest() {
MyFile myFile = new MyFile("D:\\迅雷下載");
getAllChildFiles(myFile);
printFile(myFile);
}
@Test
public void FileTest() {
MyFile srcFile = new MyFile("D:\\迅雷下載\\activiti-6.0.0");
MyFile targetFile = new MyFile("D:\\迅雷下載\\activiti-6.0.1");
try {
getAllChildFiles(srcFile);
File(srcFile,targetFile);
} catch (Exception e) {
e.printStackTrace();
}
}

public void getAllChildFiles(MyFile myFile) {
myFile.setWritable(true,true);
File[] files = myFile.listFiles();
List<MyFile> childFiles = new ArrayList<MyFile>();
for (File file : files) {
MyFile mf = new MyFile(file);
childFiles.add(mf);
if(mf.isDirectory()) {
getAllChildFiles(mf);
}
}
myFile.setChildFiles(childFiles);
}

public void printFile(MyFile myFile) {
System.out.println(myFile.getAbsolutePath());
System.out.println("====>"+myFile.getName());
List<MyFile> childFiles = myFile.getChildFiles();
if(childFiles != null && childFiles.size() > 0) {
for (MyFile mf : childFiles) {
printFile(mf);
}
}
}

public void File(MyFile srcFile,MyFile targetFile) throws Exception {
if(srcFile.isDirectory()) {
targetFile.mkdirs();
}else {
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(targetFile);
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer)) != -1) {
fos.write(buffer,0,len);
}
fis.close();
fos.close();
}
List<MyFile> srcChildFiles = srcFile.getChildFiles();
List<MyFile> targetChidFiles = new ArrayList<MyFile>();
if(srcChildFiles != null && srcChildFiles.size() > 0) {
for (MyFile srcf : srcChildFiles) {
StringBuilder targFilePath = new StringBuilder(targetFile.getAbsolutePath());
targFilePath.append(MyFile.separator).append(srcf.getName());
System.out.println(targFilePath.toString());
MyFile targf = new MyFile(targFilePath.toString());
targetChidFiles.add(targf);
File(srcf,targf);
}
}
targetFile.setChildFiles(targetChidFiles);
}

}
希望能幫助到你,謝謝!!

E. java鎬庝箞鐢ㄦ祦璇誨彇涓涓鏂囦歡鐨勫唴瀹圭劧鍚庢坊鍔犲埌鍒鐨勬枃浠朵腑錛

FileInputStream fis = new FileInputStream("d:/a.txt");//浠巃.txt涓璇誨嚭x0dx0aFileOutputStream fos = new FileOutputStream("d:/b.txt");//鍐欐ā鏁e埌鏃﹀甫姘忚岃獕b.txt涓鍘籠x0dx0aBufferedReader reader = new BufferedReader(new InputStreamReader(fis));x0dx0aBufferedWriter write = new BufferedWriter(new OutputStreamWriter(fos));x0dx0aString temp;x0dx0awhile((temp = reader.readLine())!= null){//涓嬈¤諱竴琛孿x0dx0awrite.write(temp);x0dx0a}x0dx0areader.close();x0dx0awrite.close();

F. java文件輸出流,寫到.txt文件,如何實現換行

1 實現的方式總共有3中, 1)原始的 \r\n 方式
2)BufferedWriter的newline()方法
3) System.getProperty()方法
下面使用代碼逐一展示 , 寫到.txt文件實現換行
2 使用java中的轉義符"\r\n":
FileOutputStream fos=new FileOutputStream("c;\\11.txt");
String str="aaa";
str+="\r\n";
fos.write(str);
3 BufferedWriter的newline()方法:
FileOutputStream fos=new FileOutputStream("c;\\11.txt");
BufferedWriter bw=new BufferedWriter(fos);
bw.write("你好");
bw.newline(); //實現換行
4 System.getProperty()方法:
FileOutputStream fos=new FileOutputStream("c;\\11.txt");
String str = "aaa"+System.getProperty("line.separator");
fos.write(str);

G. JAVA涓鏂囦歡嫻佸拰瀛楃︽祦鎿嶄綔瀹屾垚鍚庯紝濡備笉鍏抽棴錛屼細鍑虹幇浠涔堟儏鍐碉紵錛

瀛楃︽祦涓嶅叧闂灝烘壆姍樻槸娌″叧緋葷殑 鍨冨溇鏀剁己鎴栭泦鍒版渶鍚庝細鑷鍔ㄤ負浣犲洖鏀 鍙涓嶈繃瑕佸氬崰鐢ㄥ唴瀛樹竴浼氳屽凡 浣嗗傛灉鏂囦歡嫻佸竷鍏抽棴錛堝挨鍏舵槸鐙鍗犳ā寮忎笅錛 鍒欎細鍑虹幇闄靛洟寮傚父 瀵瑰栫殑紼嬪簭涔熸墦涓嶅紑榪欎釜鏂囦歡鍥犳よ佽板緱鍏抽棴瀹

閱讀全文

與java流和文件相關的資料

熱點內容
網路上說的陳勁生是什麼 瀏覽:913
網站首頁都用了哪些知識點 瀏覽:41
如何刪除手機軟體的重復文件 瀏覽:908
微信頁面沒有添加圖標 瀏覽:47
暗黑綠色裝備升級 瀏覽:261
到哪裡學編程啊 瀏覽:752
電腦粉碎文件和卸載 瀏覽:365
怎麼查看共享電腦所有文件 瀏覽:617
創意編程社區賬號在哪裡 瀏覽:377
好用的壓縮文件 瀏覽:538
360下載的補丁包在哪個文件夾 瀏覽:988
微信54安卓版本官網 瀏覽:698
為什麼cnc編程找工作難 瀏覽:777
sql資料庫埠不通 瀏覽:361
javaword轉swf 瀏覽:174
cms數據更新是什麼 瀏覽:39
電腦保密櫃在文件里怎麼找不到了 瀏覽:225
nodejs前端後端 瀏覽:129
程序俠後台多少 瀏覽:32
mysqle執行sql文件在哪裡 瀏覽:466

友情鏈接