导航:首页 > 编程语言 > 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流和文件相关的资料

热点内容
企业微信电脑版怎么无法接受文件 浏览:968
微信个人相册怎么隐藏 浏览:368
上传文件时怎么获取文件全路径 浏览:955
linuxjs读取文件 浏览:104
exe后缀的pdf文件 浏览:381
win8升级到专业版 浏览:487
快图浏览quickpiciphone 浏览:847
app线稿图需要哪些要求 浏览:752
java只能输入汉字 浏览:630
java定义char 浏览:133
excel2007插入压缩文件 浏览:70
怎么设定自己公司的网站 浏览:324
如何在办公软件上直接复制文件 浏览:939
c语言程序设计矩阵运算 浏览:894
影响网络质量因素有哪些 浏览:587
最新win10秘钥在线激活 浏览:192
cad导入su8文件无法使用 浏览:828
怎么做编程入门 浏览:851
用织梦建手机网站 浏览:38
灌南数控编程怎么学 浏览:957

友情链接