Java 文件操作

   文件(File)是最常见的数据源之一,在程序中经常需要将数据存储到文件中,也经常需要根据需要从指定的文件中进行数据的读取。

   1 文件的路径

    每个文件以一个文件路径和文件名称进行表示,在需要访问该文件的时,只需要知道该文件的路径以及文件的全名即可。在不同的操作系统环境下,文件路径的表示形式是不一样的,例如在Windows操作系统中一般的表示形式为C:\windows\system,而Unix上的表示形式为/user/my。所以如果需要让Java程序能够在不同的操作系统下运行,书写文件路径时还需要比较注意。

           绝对路径是指书写文件的完整路径,例如d:\java\Hello.java,该路径中包含文件的完整路径d:\java以及文件的全名Hello.java。使用该路径可以唯一的找到一个文件,不会产生歧义。但是使用绝对路径在表示文件时,受到的限制很大,且不能在不同的操作系统下运行,因为不同操作系统下绝对路径的表达形式存在不同。

         相对路径是指书写文件的部分路径,例如\test\Hello.java,该路径中只包含文件的部分路径\test和文件的全名Hello.java,部分路径是指当前路径下的子路径,例如当前程序在d:\abc下运行,则该文件的完整路径就是d:\abc\test

         Eclipse项目中运行程序时,当前路径是项目的根目录,例如工作空间存储在d:\javaproject,当前项目名称是Test,则当前路径是:d:\javaproject\Test。在控制台下面运行程序时,当前路径是class文件所在的目录,如果class文件包含包名,则以该class文件最顶层的包名作为当前路径。

         另外在Java语言的代码内部书写文件路径时,需要注意大小写,大小写需要保持一致,路径中的文件夹名称区分大小写。由于’\’Java语言中的特殊字符,所以在代码内部书写文件路径时,例如代表“c:\test\java\Hello.java”时,需要书写成“c:\\test\\java\\Hello.java”或“c:/test/java/Hello.java”,这些都需要在代码中注意。

     2 File类

  File类包含了大部分的文件操作方法,对象代表文件或文件夹,也就是文件的路径。

  创建文件对象方法:(1) public File(String filepath)   

         File f1 = new File(“d:\\myfile\a.txt”);   //绝对路径

                   File f2 = new File(“a.txt”);                   //相对路径

 File f3 = new File(“d:\\myfile”);        //打开文件夹

(2) public File(String parent, String child)  父路径与子路径结合代表文件的完整路径

File f1 = new File(“d:\\myfile\\“,”a.txt”);   3

创建文件   public boolean createNewFile() 

创建文件夹 public boolean mkdirs()  当前路径中包含的父目录不存在时,也会自动根据需要创建。

                       public boolean mkdir()  父目录不存在时不会创建,假设d盘下只有一个test文件夹,则创建d:\test\abc文件夹则成功,如果创建d:\a\b文件夹则创建失败,因为该路径中d:\a文件夹不存在

判断文件是否存在 public boolean exists()

删除当前文件或文件夹 public boolean delete()如果删除的是文件夹,则该文件夹必须为空,如果需要删除一个非空的文件夹,则需要首先删除该文件夹  内部的每个文件和文件夹,然后在可以删除

获得当前文件或文件夹的绝对路径  public String getAbsolutePath()

获得当前文件或文件夹的名称 public String getName()

获得当前路径中的父路径  public String getParent()

判断当前File对象是否是目录  public boolean isDirectory()

判断当前File对象是否是文件 public boolean isFile()

返回文件存储时占用的字节数 public long length()

返回当前文件夹下所有的文件名和文件夹名称     public String[] list()

修改文件名  public boolean renameTo(File dest)

设置当前文件或文件夹为只读   public boolean setReadOnly()

将文件中的数据读入程序,是将外部的数据传入程序中,应该使用输入流InputStream或Reader从文件中读入数据,输入流对应的子类FileInputStream或FileReader。读取文件 的步骤:将文件中的数据转换为流(创建流对象),读取流内部的数据,关闭流对象。

3  FileInputStream 类 

以字节为单位的流处理。字节序列:二进制数据。与编码无关,不存在乱码问题。

FileInputStream 类的主要方法有: 

read (), read ( byte[] b ), read ( byte[],int off,int len ) ,available(); 

InputStreamReader 类 

以文本格式输入 / 输出,可以指定编码格式; InputStreamReader可以将流如stream转换成字符流方式,是reader和stream之间的桥梁。

一般用法: 

InputStreamReader isr = new InputStreamReader(new FileInputStream(""F:/user_filter.txt"));
   while((ch = isr.read())!=-1)
   {    System.out.print((char)ch); 
   } 


5  FileReader 类 

InputStreamReader 类的子类,所有方法(read ()等)都从父类 InputStreamReader 中继承来; 该类与它的父类 InputStreamReader 的主要不同在于构造函数,主要区别也就在于构造函数!从 InputStreamReader 的构造函数中看到,参数为 InputStream 和编码方式,可以看出,当要指定编码方式时,必须使用 InputStreamReader 类;而 FileReader 构造函数的参数与 FileInputStream 同,为 File 对象或表示 path 的 String 。

 FileInputStream 类与 FileReader 类的区别: 

       FileInputStream :以字节流方式读取;

       FileReader :把文件转换为字符流读入;


一般用法: 

<pre name="code" class="java">FileReader fr = new FileReader("<span style="font-family: Calibri;">F:/user_filter.</span>txt");
   char[] buffer = new char[1024];
   int ch = 0;
   while((ch = fr.read())!=-1 )
   {
    System.out.print((char)ch); 
   } 


 


InputStreamReader 类 

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。

一般用法:       

 InputStreamReader isr=new InputStreamReader(new FileInputStream("F:/user_filter.csv"));
			BufferedReader reader=new BufferedReader(isr);
			String line="";
			line=reader.readLine();			
			while((line=reader.readLine())!=null)
				String[] parts = line.split(",");
                   reader.close();

7 FileWritter

<span style="background-color: rgb(255, 255, 255); font-family: Calibri; text-indent: 21pt;">FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。</span>

8 BufferedWriter

缓冲字符(BufferedWriter )是一个字符流类来处理字符数据。不同于字节流(数据转换成字节),你可以直接写字符串,数组或字符数据保存到文件。

一般用法:

File file=new File(filepath1);//创建存储路径
		if(!file.exists())
			file.createNewFile();
		BufferedWriter bw = new BufferedWriter(new FileWriter(file,true));//ture表示文件追加,缺省时为文件重写
		for(int i=0;i<5;i++)
		    bw.write(part[i]+",");
		    bw.write(part[5]);
		    bw.newLine();		
		    bw.close();

9 FileOutputStream

文件输出流是一种用于处理原始二进制数据的字节流类。为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。



  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值