把集合中的数据存储到文本文件案例
package someExample;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
/*
* 把集合中的数据存储到文本文件案例
*
* 需求:把ArrayList集合中的字符串存储到文本文件中
*
* 分析:
* 通过题目意思我们可以知道如下的一些内容,
* ArrayList集合中存储的是字符串。
* 遍历ArrayList集合,把数据获取到。
* 然后存储到文本文件中。
* 文本文件说明使用字符流。
*
* 数据源
* ArrayList<String> -- 遍历得到每一个字符串数据
* 目的地
* a.txt -- FileWriter -- BufferedWriter
*/
public class ArrayListToFileDemo {
public static void main(String[] args) throws IOException {
// 封装数据源(创建集合对象)
ArrayList<String> array = new ArrayList<String>();
// 存储字符串数据
array.add("hello");
array.add("world");
array.add("java");
// 封装目的地
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
// 遍历
for (String s : array) {
// 写出数据
bw.write(s);
bw.newLine();
bw.flush();
}
// 释放资源
bw.close();
}
}
把文本文件中的数据存储到集合中案例
package someExample;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
/*
* 把文本文件中的数据存储到集合中案例
*
* 需求:从文本文件中读取数据(每一行为一个字符串数扰)到集合中,并遍历集合
*
* 分析:
* 通过题目的意思我们就可以知道如下一些内容,
* 数据源是文本文件。
* 目的地是一个集合。
* 而且元素是字符串
*
* 数据源
* a.txt -- FileReader -- BufferedReader
* 目的地
* ArrayList<String> -- 遍历集合并输出字符串
*/
public class FileToArrayListDemo {
public static void main(String[] args) throws IOException {
// 封装数据原
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
// 封装目的地(创建集合对象)
ArrayList<String> array = new ArrayList<String>();
// 读取数据存储到集合中
String line = null;
while ((line = br.readLine()) != null) {
array.add(line);
}
// 释放资源
br.close();
// 遍历集合
for (String s : array) {
System.out.println(s);
}
}
}
随机获取文本文件中的姓名案例
package someExample;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
/*
* 随机获取文本文件中的姓名案例
*
* 需求:我有一个文本文件中存储了几个名称,请写一个程序随即获取一个人的名字。
*
* 分析:
* A:把文本文件中的数据存储到集合中
* B:随机产生一个索引
* C:根据该索引获取一个值
*/
public class GetNameDemo {
public static void main(String[] args) throws IOException {
// 把文本文件中的数据存储到集合中
BufferedReader br = new BufferedReader(new FileReader("b.txt"));
ArrayList<String> array = new ArrayList<String>();
String line = null;
while ((line = br.readLine()) != null) {
array.add(line);
}
// 随机产生一个索引
Random r = new Random();
int index = r.nextInt(array.size());
// 根据该索引获取一个值
String name = array.get(index);
System.out.println("幸运用户是:" + name);
// // 封装数据源
// BufferedReader br = new BufferedReader(new FileReader("b.txt"));
// // 封装目的地
// HashMap<Integer, String> hm = new HashMap<Integer, String>();
//
// // 读取数据存到到集信中
// int index = 1;
// String line = null;
// while ((line = br.readLine()) != null) {
// hm.put(index, line);
// index++;
// }
//
// // 释放资源
// br.close();
//
// // 随即获取一个名称
// Random r = new Random();
// int i = r.nextInt(hm.size()) + 1;
// System.out.println(hm.get(i));
}
}
复制单级文件夹案例
package someExample;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 复制单级文件夹案例
*
* 需求:复制单极文件夹(复制文件夹所有的文件到另一个文件夹中)
*
* 数据源:e:\\demo
* 目的地:e:\\test
*
* 分析:
* A:封装目录
* B:获取该目录下的所有文件的File数组
* C:遍历该File数组,得到每一个File对象
* D:把该File进行复制
*/
public class CopyFolderDemo {
public static void main(String[] args) throws IOException {
// 封装目录
File srcFolder = new File("e:\\demo");
// 封装目的地
File destFolder = new File("e:\\test");
// 如果目的地的文件夹不存在,就创建
if (!destFolder.exists()) {
destFolder.mkdir();
}
// 获取该目录下的所有文件的File数组
File[] fileArray = srcFolder.listFiles();
// 遍历该File数组,得到每一个File对象
for (File file : fileArray) {
// System.out.println(file);
// 数据源:e:\\demo\\e.mp3
// 目的地:e:\\test\\e.mp3
String name = file.getName();// e.mp3
File newFile = new File(destFolder, name);// e:\\test\\e.mp3
copy(file, newFile);
}
}
public static void copy(File file, File newFile) throws IOException {
// 数据源
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
file));
// 目的地
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(newFile));
// 读写数据
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
// 释放资源
bos.close();
bis.close();
}
}
复制指定目录下指定后缀名的文件并修改名称案例
package someExample;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
/*
* 复制指定目录下指定后缀名的文件并修改名称案例
*
* 需求:复制指定目录下的指定文件,并修改后缀名。
* 指定文件是:java文件
* 指定后缀名是:.jad
* 指定目的目录是:jad
*
* 数据源:e:\\javas\\A.java
* 目的地:e:\\jad\\A.jad
*
* 分析:
* A:封装目录
* B:获取该目录下的java文件的File数组
* C:遍历该File数组,得到每一个File对象
* D:把该File进行复制
* E:在目的地目录下改名
*/
public class CopyFolderDemo2 {
public static void main(String[] args) throws IOException {
// 封装目录
File srcFolder = new File("e:\\javas");
File destFolder = new File("e:\\jad");
// 如果该文件夹不存在就创建该文件夹
if (!destFolder.exists()) {
destFolder.mkdir();
}
// 获取该目录下的java文件的File数组
File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
for (File file : fileArray) {
// System.out.println(file);
// 数据源:e:\\javas\DataTypeDemo.java
// 目的地:e:\\jad\DataTypeDemo.java
String name = file.getName();
File newFile = new File(destFolder, name);
// 把该File进行复制
copyFile(file, newFile);
}
// 在目的地目录下改名
File[] destFileArray = destFolder.listFiles();
for (File destFile : destFileArray) {
// System.out.println(file);
// e:\\javas\\DataTypeDemo.java
// e:\\jad\\DataTypeDemo.jad
String name = destFile.getName();// DataTypeDemo.java
String newName = name.replace(".java", ".jad");// DataTypeDemo.jad
File newFile = new File(destFolder, newName);
destFile.renameTo(newFile);
}
}
public static void copyFile(File file, File newFile) throws IOException {
// 封装数据源
BufferedReader br = new BufferedReader(new FileReader(file));
// 封装目的地
BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
// 读写数据
String line = null;
while ((line = br.readLine()) != null) {
bw.write(line);// 写一行数据
bw.newLine();// 跟据系统属性换行
bw.flush();// 刷新缓存
}
// 释放资源
bw.close();
br.close();
}
}