IO流下分为字节流与字符流,每个流又分为输入输出以及读写。

字节流的两个基类为InputStream与OutputStream。

字符流为Reader和Writer

aaarticlea/png;base64,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" alt="" />

一般的缓冲流读写字符:

BufferedReader br = new BufferedReader(new FileReader("b.txt"));

如果有编码格式的话使用:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\test\\xiong.txt"), "gbk"));

读取一个文本里面的内容那个,并随机输出一行内容。

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\test\\xiong.txt"), "gbk"));
ArrayList<String> list = new ArrayList<String>();
String line = null;
while ((line=br.readLine())!=null){
list.add(line);
}
int random = new Random().nextInt(list.size());
System.out.println(list.get(random));
}

复制文件夹下的文件,文件里有相片,视频所以使用字节流:

package cn;

import java.io.*;

public class FileDemo2 {
public static void main(String[] args) throws IOException {
File srcFolder = new File("d:\\demo");
File destFolder = new File("d:\\test");
if (!destFolder.exists()){
destFolder.mkdir();
}
File[] files = srcFolder.listFiles();
for (File file:files){
File newFile = new File(destFolder, file.getName());
copy(file, newFile);
}
}
private static void copy(File file, File newFile) throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
int len = 0;
byte[] bys = new byte[1024];
while ((len=bis.read(bys))!=-1){
bos.write(bys, 0 , len);
}
     bis.close()
    bos.close()
}
}

将一个文件夹下的以.java结尾的文本文件复制到另一个文件夹并改为以.jad结尾

package cn;

import java.io.*;
import java.util.ArrayList;
import java.util.Random; /**
* Created by Administrator on 2015/3/11.
*/
public class FileDemo {
public static void main(String[] args) throws IOException {
File srcFolder = new File("c:\\java");
File destFolder = new File("c:\\jad");
if(!(destFolder.exists())){
destFolder.mkdir();
}
File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile()&&name.endsWith(".java");
}
});
for(File file:fileArray){
String name = file.getName();
File newFile = new File(destFolder, name);
copy(file, newFile);
}
File[] destFileArray = destFolder.listFiles();
for (File destFile:destFileArray){
System.out.println(destFile);
String name = destFile.getName();
String newName = name.replace(".java", ".jad");
File newFile = new File(destFolder, newName);
destFile.renameTo(newFile);
}
} private static void copy(File file, File newFile) throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
int len = 0;
byte[] bys = new byte[1024];
while ((len=bis.read(bys))!=-1){
bos.write(bys, 0 , len);
}
bis.close();
bos.close();
}
}

复制一个文件夹下的所有内容到指定目录

package cn;

import java.io.*;
import java.util.ArrayList;
import java.util.Random; /**
* Created by Administrator on 2015/3/11.
*/
public class FileDemo {
public static void main(String[] args) throws IOException {
File srcFile = new File("d:\\demos");
File destFile = new File("c:\\");
copyFolder(srcFile, destFile);
} private static void copyFolder(File srcFile, File destFile) throws IOException{
if(srcFile.isDirectory()){
File newFolder = new File(destFile, srcFile.getName());
newFolder.mkdir();
File[] fileArray = srcFile.listFiles();
for (File file:fileArray){
copyFolder(file, newFolder);
}
}else{
File newFile = new File(destFile, srcFile.getName());
copyFile(srcFile, newFile);
}
} private static void copyFile(File srcFile, File newFile) throws IOException{
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
int len = 0;
byte[] bys = new byte[1024];
while ((len=bis.read(bys))!=-1){
bos.write(bys, 0, len);
}
bis.close();
bos.close();
}
}

java读写的更多相关文章

  1. Java读写文本文件操作

    package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; ...

  2. java 读写word java 动态写入 模板文件

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...

  3. Java读写文件方法总结

    Java读写文件方法总结 Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既 ...

  4. Java读写文件的几种方式

    自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行 ...

  5. java读写文件大全

     java读写文件大全 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类,这两个类都是抽象类,Writer中 write(char[] ch,int o ...

  6. Java读写Windows共享文件夹 .

    版权声明:本文为博主原创文章,未经博主允许不得转载. 项目常常需要有访问共享文件夹的需求,例如共享文件夹存储照片.文件等.那么如何使用Java读写Windows共享文件夹呢? Java可以使用JCIF ...

  7. 【转】Java 读写Properties配置文件

    [转]Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形 ...

  8. java 读写excle

    2014-04-16 20:38:20 java读写excel 晚上打算研究如何c来编写

  9. Java 读写Properties配置文件

    Java 读写Properties配置文件 JAVA操作properties文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了M ...

  10. 如何使用Java读写系统属性?

    如何使用Java读写系统属性? 读: Properties props = System.getProperties(); Enumeration prop_names = props.propert ...

随机推荐

  1. Android多线程任务优化1:探讨AsyncTask的缺陷

     AsyncTask还有别的缺陷,在生成listview的时候,如果adapter里面的count动态改变的话,不能使用AsyncTask,只能使用Thread+Handler,否则会出现如下错误 j ...

  2. POJ 2758 Checking the Text(Hash+二分答案)

    [题目链接] http://poj.org/problem?id=2758 [题目大意] 给出一个字符串,支持两个操作,在任意位置插入一个字符串,或者查询两个位置往后的最长公共前缀,注意查询的时候是原 ...

  3. swift3.0基础语法(2)

    变量/常量,元组声明 var aaa = 0;//声明变量aaa 首次赋值时自动解析为Int类型 var aaa:Int = 0;//声明Int类型变量aaa let aaa = 0;//声明常量aa ...

  4. MySQL性能调优的方法

    第一种方法 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字 ...

  5. SQL Server索引进阶:第六级,标签

    原文地址: Stairway to SQL Server Indexes: Level 6,Bookmarks 本文是SQL Server索引进阶系列(Stairway to SQL Server I ...

  6. jQuery实现页面关键字搜索

    <style type="text/css"> .highlight { background-color:yellow; } </style> <s ...

  7. zoj 1366 Cash Machine

    01背包加变形 动态规划的时候就犯浑了,每个状态都要记录的,我却只记录了当前状态的!! #include<stdio.h> #include<string.h> int max ...

  8. iOS NSMutableURLRequest 上传图片

    - (void)postImage:(UIImage *)_image { //分界线的标识符 NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x&q ...

  9. 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等

    转自:http://blog.csdn.net/dolacmeng/article/details/46594839 以前做项目用高德地图SDK,需要注册账号和AppID,然后下载SDK集成到项目中, ...

  10. Objective-c (多输入参数的方法)

    一个方法可能具有多个输入参数.在头文件中,可以定义带有多个输入参数的方法: - (void)setIntX:(int)n andSetIntY:(int)d 下面通过一个例子来说明它的具体用法: #i ...