`
huanggaole
  • 浏览: 10149 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

java中读取文件总结

 
阅读更多
1、读文件:

readLine()是BufferedReader类的一个方法,它每次从缓冲里读一行数据。
BufferedReader类参数可为:InputStreamReader、FileReader类型
FileReader(File file)
FileReader(String fileName)

InputStreamReader(InputStream in)

//接收键盘输入作为输入流,把输入流放到缓冲流里面
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));




BufferReader in=new BufferReader(new FileReader(name))





请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。

Java代码 
void doPack(String fileNameAndPath)  
{    
   FileReader fr;  
   try {  
       fr=new FileReader(fileNameAndPath);  
       BufferedReader br=new BufferedReader(fr);  
       String readLine=null;  
       int lineNumber=1;  
       while((readLine=br.readLine())!=null)  
       {  
          readLine=lineNumber+":"+readLine;  
          System.out.println(readLine);  
          lineNumber++;  
       }  
   } catch (Exception e) {  
       e.printStackTrace();  
   }       


    void doPack(String fileNameAndPath)
    { 
       FileReader fr;
       try {
           fr=new FileReader(fileNameAndPath);
           BufferedReader br=new BufferedReader(fr);
           String readLine=null;
           int lineNumber=1;
           while((readLine=br.readLine())!=null)
           {
              readLine=lineNumber+":"+readLine;
              System.out.println(readLine);
              lineNumber++;
           }
       } catch (Exception e) {
           e.printStackTrace();
       }    
    } 易错地方:

Java代码 
while(br.readLine()!=null){    
    System.out.println(br.readLine());    
}    
其中每个循环(一次打印)br.readLine()被执行了两次,当然是隔行打印!!.  
应该是  
BufferedReader   br=new   BufferedReader(file);    
String   line   =   null;  
while((line   =   br.readLine())   !=   null){    
     System.out.println(line);    


while(br.readLine()!=null){ 
    System.out.println(br.readLine()); 

其中每个循环(一次打印)br.readLine()被执行了两次,当然是隔行打印!!.
应该是
BufferedReader   br=new   BufferedReader(file); 
String   line   =   null;
while((line   =   br.readLine())   !=   null){ 
     System.out.println(line); 
} 2、写文件:

BufferWriter(Writer out)

BufferWriter的参数类型可为:FileWriter、OutputStreamWriter

FileWriter(String fileName)

FileWriter(File file)

OutputStreamWriter(OutputStream out)

1、

Java代码 
File file = new File(“D:\\abc.txt“);  
FileWriter fw = new FileWriter("f:/jackie.txt");//创建FileWriter对象,用来写入字符流  
BufferedWriter output = new BufferedWriter(fw);  
output.write(s1); 

File file = new File(“D:\\abc.txt“);
FileWriter fw = new FileWriter("f:/jackie.txt");//创建FileWriter对象,用来写入字符流
BufferedWriter output = new BufferedWriter(fw);
output.write(s1);
2.

Java代码 
Writer out  
  = new BufferedWriter(new OutputStreamWriter(System.out)); 

Writer out
   = new BufferedWriter(new OutputStreamWriter(System.out));
3、

Java代码 
FileOutputStream fo = new FileOutputStream(filePath);  
OutputStreamWriter out = new OutputStreamWriter(fo, "UTF-8");  
 
out.write(fileContent);  
out.close(); 

FileOutputStream fo = new FileOutputStream(filePath);
OutputStreamWriter out = new OutputStreamWriter(fo, "UTF-8");

out.write(fileContent);
out.close(); 


其他:


FileOutputStream 用于写入诸如图像数据之类的原始字节的流。
FileWriter只能写文本文件




InputStream in = new  BufferedInputStream( new  FileInputStream(filePath)); 






例子:

Java代码 
private void copy(File src, File dst) {  
        InputStream in = null;  
        OutputStream out = null;  
 
        try {  
            in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);  
            out = new BufferedOutputStream(new FileOutputStream(dst), BUFFER_SIZE);  
            byte[] buffer = new byte[BUFFER_SIZE];  
            int len = 0;  
            while ((len = in.read(buffer)) > 0) {  
                out.write(buffer, 0, len);  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            if (null != in) {  
                try {  
                    in.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
            if (null != out) {  
                try {  
                    out.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
 
    } 

private void copy(File src, File dst) {
InputStream in = null;
OutputStream out = null;

try {
in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(dst), BUFFER_SIZE);
byte[] buffer = new byte[BUFFER_SIZE];
int len = 0;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}  Java代码 
/* Reads some number of bytes from the input stream and stores them into 
* the buffer array <code>b</code>. The number of bytes actually read is 
* returned as an integer. 
*/ 
public int read(byte b[])  
 
*  
* Writes <code>len</code> bytes from the specified byte array   
* starting at offset <code>off</code> to this output stream.   
*/  
ublic void write(byte b[], int off, int len) 

     /* Reads some number of bytes from the input stream and stores them into
      * the buffer array <code>b</code>. The number of bytes actually read is
      * returned as an integer.
      */
     public int read(byte b[])

    /*
     * Writes <code>len</code> bytes from the specified byte array
     * starting at offset <code>off</code> to this output stream.
     */
    public void write(byte b[], int off, int len) 。。。

InputStream转byte[]:

Java代码 
private byte[] InputStreamToByte(InputStream is) throws IOException {    
       ByteArrayOutputStream bytestream = new ByteArrayOutputStream();    
       int ch;    
       while ((ch = is.read()) != -1) {    
        bytestream.write(ch);    
       }    
       byte bb[] = bytestream.toByteArray();    
       bytestream.close();    
       return bb;    
    } 

private byte[] InputStreamToByte(InputStream is) throws IOException { 
       ByteArrayOutputStream bytestream = new ByteArrayOutputStream(); 
       int ch; 
       while ((ch = is.read()) != -1) { 
        bytestream.write(ch); 
       } 
       byte bb[] = bytestream.toByteArray(); 
       bytestream.close(); 
       return bb; 
    }

byte[] 转InputStream

Java代码 
byte[] data;    
   InputStream is = new ByteArrayInputStream(data);  

byte[] data; 
   InputStream is = new ByteArrayInputStream(data);  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics