導航:首頁 > 編程語言 > 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流和文件相關的資料

熱點內容
平時用什麼app看nba 瀏覽:503
win10想以管理員身份運行bat文件 瀏覽:85
合並單元格中的其他數據如何排序 瀏覽:331
電腦窗口程序在哪 瀏覽:281
前女友把我微信刪了又加什麼意思 瀏覽:655
win10不識別無線xboxone手柄 瀏覽:403
汽車之家app怎麼看成交價 瀏覽:908
abc文件破解密碼 瀏覽:516
怎麼登錄米家app賬號 瀏覽:165
兆歐表多少轉讀數據 瀏覽:414
多媒體網路通訊 瀏覽:747
文件上的表填不了內容該怎麼辦 瀏覽:899
弟弟迷上網路小說怎麼辦 瀏覽:766
網路上有人想訪問我的地址怎麼辦 瀏覽:730
linux解壓zip亂碼 瀏覽:839
看直播數據用哪個平台最好 瀏覽:730
win10晶元驅動程序版本 瀏覽:763
如何給word添加公式編輯器 瀏覽:666
iphone桌面文件夾怎樣合並 瀏覽:919
要我蘋果賬號密碼忘記了怎麼辦 瀏覽:578

友情鏈接