文件管理 · 2022年8月16日

java字节文件读写|java文件如何读取

『壹』 java文件如何读取

有几种方法读取吧File file = new File("d:\\a.txt");//把D盘目录下的a.txt读取出来,InputStream is = new FileInputStream(file);//把文件以字节流读回到内存中第二种是类加答载Demo1.class.getClassLoader().getResourceAsStream("a.txt");//Demo1为当前类名,a.txt在与Demo1.class在同一目录下。还有其它的就不说了

『贰』 java中字节级数据文件的读写编程

import java.util.Scanner;import java.io.*;class MyFile{ MyFile(String d) { this.d=d; } void write(String path,String datafile) { File f=new File(this.d); StringBuilder sb=new StringBuilder(); String savepath; String[] strs; BufferedOutputStream bos; byte[] buf; this.path=path.endsWith("\\") ? path.substring(0,path.length()-1) : path; savepath=this.path+"\\"+datafile; try { strs=f.list(); for(String str : strs) { sb.append(str); sb.append("\r\n"); } bos=new BufferedOutputStream(new FileOutputStream(savepath),MyFile.Size); buf=sb.toString().getBytes(); bos.write(buf,0,buf.length); //bos.flush(); bos.close(); } catch(Exception e) { System.out.println(e.getMessage()); } } void show(String datafile) { String fp=datafile.contains("\\") ? datafile : this.path+"\\"+datafile; File f=new File(fp); BufferedInputStream bis; byte[] buf; try { buf=new byte[(int)f.length()]; bis=new BufferedInputStream(new FileInputStream(f),MyFile.Size); bis.read(buf,0,buf.length); System.out.println(new String(buf)); bis.close(); } catch(Exception e) { System.out.println(e.getMessage()); } } private static final int Size=8*1024; private String d,path;}public class P { public static void main(String[] args) { Scanner sc=new Scanner(System.in); MyFile f; String d,path,datafile; System.out.print("请输入windows系统中某个目录的路径:"); d=sc.nextLine(); f=new MyFile(d); System.out.print("请输入保存数据的文件的路径:"); path=sc.nextLine(); System.out.print("请输入保存数据的文件的文件名:"); datafile=sc.nextLine(); f.write(path,datafile); f.show(datafile); sc.close(); } }

『叁』 java怎么读取和写入字节文件开发环境 MyEclipse 8.6

InputStream三个基本的读方法abstractintread():读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。intread(byte[]b):将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。intread(byte[]b,intoff,intlen):将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。OutputStream三个基本的写方法abstractvoidwrite(intb):往输出流中写入一个字节。voidwrite(byte[]b):往输出流中写入数组b中的所有字节。voidwrite(byte[]b,intoff,intlen):往输出流中写入数组b中从偏移量off开始的len个字节的数据。其它方法voidflush():刷新输出流,强制缓冲区中的输出字节被写出。voidclose():关闭输出流,释放和这个流相关的系统资源。

『肆』 java中字节流读写和字符流读写怎么理解

字节流与字符流主要的区别是他们的的处理方式字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang而在字符流转化为字节流时,实际上是String转化为byte[]时,byte[] String.getBytes(String charsetName)也是一样的道理

『伍』 java中如何使用缓冲区对文件进行读写操作

首先,了解下什么是缓冲区:电脑内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈——就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆——就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区——就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局/静态存储区——全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。 常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改) 电脑缓冲区就是预留下来的做为急用的那一部分,为暂时置放输出或输入资料的内存。 如何对缓冲区进行操作:当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。使用FileReader读取文件:FileReader fr = new FileReader("ming.txt");int ch = 0; while((ch = fr.read())!=-1 ) { System.out.print((char)ch); }其中read()方法返回的是读取得下个字符。当然你也可以使用read(char[] ch,int off,int length)这和处理二进制文件的时候类似。事实上在FileReader中的方法都是从InputStreamReader中继承过来的。read()方法是比较好费时间的,如果为了提高效率我们可以使用BufferedReader对Reader进行包装,这样可以提高读取得速度,我们可以一行一行的读取文本,使用readLine()方法。BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt"))); String data = null; while((data = br.readLine())!=null) { System.out.println(data); }了解了FileReader操作使用FileWriter写文件就简单了,这里不赘述。Eg.我的综合实例:import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; public class testFile { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // file(内存)—-输入流—->【程序】—-输出流—->file(内存) File file = new File("d:/temp", "addfile.txt"); try { file.createNewFile(); // 创建文件 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 向文件写入内容(输出流) String str = "亲爱的小南瓜!"; byte bt[] = new byte[1024]; bt = str.getBytes(); try { FileOutputStream in = new FileOutputStream(file); try { in.write(bt, 0, bt.length); in.close(); // boolean success=true; // System.out.println("写入文件成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { // 读取文件内容 (输入流) FileInputStream out = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(out); int ch = 0; while ((ch = isr.read()) != -1) { System.out.print((char) ch); } } catch (Exception e) { // TODO: handle exception } } }

『陆』 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类),从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。 随机文件读写编程的基本过程为: ① 生成流对象并且指明读写类型; ② 移动读写位置; ③ 读写文件内容; ④ 关闭文件。七里河团队答疑助人,希望我的回答对你有所帮助

『柒』 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(); }

『捌』 JAVA 字节流和字符流度读写的区别

关于字节流,就是用来读取字节文件的文件流形式,一般用于读取类似于图片,音乐,压缩文件等,并不是由一个一个得中文或英文之类的标准文字字符字符组成的文件,在读取的时候,需要一个一个byte的去读取。而字符流则可以读取例如txt文档这一类的,由标准的中英文字符或其他标准语言组成的文件,这一类文件可以直接按照char字符的大小为单位进行读取。

『玖』 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); }}复制代码5、将内容追加到文件尾部public class AppendToFile { /** * A方法追加文件:使用RandomAccessFile */ public static void appendMethodA(String fileName, String content) { try { // 打开一个随机访问文件流,按读写方式 RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw"); // 文件长度,字节数 long fileLength = randomFile.length(); //将写文件指针移到文件尾。 randomFile.seek(fileLength); randomFile.writeBytes(content); randomFile.close(); } catch (IOException e) { e.printStackTrace(); } } /** * B方法追加文件:使用FileWriter */ public static void appendMethodB(String fileName, String content) { try { //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件 FileWriter writer = new FileWriter(fileName, true); writer.write(content); writer.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { String fileName = "C:/temp/newTemp.txt"; String content = "new append!"; //按方法A追加文件 AppendToFile.appendMethodA(fileName, content); AppendToFile.appendMethodA(fileName, "append end. \n"); //显示文件内容 ReadFromFile.readFileByLines(fileName); //按方法B追加文件 AppendToFile.appendMethodB(fileName, content); AppendToFile.appendMethodB(fileName, "append end. \n"); //显示文件内容 ReadFromFile.readFileByLines(fileName); }}

『拾』 java中怎样按字节读取文件并复制到另一个文件夹

这里以字节流,FileOutputStream为例。代码例子如下:

importjava.io.File;/***把一个文件夹中的文件复制到一个指定的文件夹*@authoryoung**/importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;publicclassCopyFile{ publicstaticvoidmain(String[]args){ /*指定源exe文件的存放路径*/ Stringstr="f:/jdk-1_5_0_06-windows-i586-p.exe"; /*指定复制后的exe的目标路径*/ Stringstrs="e:/.exe"; /*创建输入和输出流*/ FileInputStreamfis=null; FileOutputStreamfos=null; try{ /*将io流和文件关联*/ fis=newFileInputStream(str); fos=newFileOutputStream(strs); byte[]buf=newbyte[1024*1024]; intlen; while((len=fis.read(buf))!=-1){ fos.write(buf,0,len); } }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ try{ fis.close(); fos.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }}