- 我有一个文本文件中存储了几个名称,请大家写一个程序实现随机获取一个人的名字。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
public class GetName {
public static void main(String[] args) throws IOException{
//把文本文件中的数据存储到集合中
BufferedReader
br=new BufferedReader(new FileReader(“a.txt”));
ArrayList
array=new ArrayList();
String
line=null;
while((line=br.readLine())!=null) {
array.add(line);
}
br.close();
//随机产生一个索引
Random
r=new Random();
int index=r.nextInt(array.size());
//根据该索引获取一个值
String
name=array.get(index);
System.out.println(name);
}
}
122.复制单级文件夹
分析:A:封装目录 B:获取该目录下的所有文本的File数组
C:遍历File数组,得到每一个File对象 D:把该File进行复制
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFolderDemo {
public static void main(String[] args) throws IOException {
File
srcFoleder =new File(“e:\demo”);
File
destFolder=new File(“e:\test”);
if(!destFolder.exists()) {
destFolder.mkdir();
}
File[]
fileArray=srcFoleder.listFiles();
for(File file:fileArray) {
String
name=file.getName();
File
newFile=new File(destFolder,name);
copyFile(file, newFile);
}
}
public static void copyFile(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);
}
}
}
- 复制多级文件夹
分析:
A:封装数据源File B:封装目的地File
C:判断该File是文件夹还是文件
a:是文件 就在目的地目录下创建该文件夹,获取该File对象下的所有文件或者文件夹File对象,遍历得到每一个File对象
回到C
b:是文件 就复制(文件流)
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFoldersDemo {
public static void main(String[] args) throws IOException {
File
srcFile=new File(“E:\gj\demo”);
File
destFile=new File(“E:\”);
copyFolder(srcFile,destFile);
}
public 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);
}
}
public static void copyFile(File srcFile,File newFile)throws IOException{
BufferedInputStream
bis=new BufferedInputStream (new FileInputStream(newFile));
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();
}
}
124.已知s.txt文件中有这样的一个字符串:“qwertyuioplkjhgfdsazxcvb”请编写程序读取数据内容,把排序后的数据写入ss.txt中
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
public class StringDemo {
public static void main(String[] args) throws IOException{
//读取该文件的内容,存储到一个字符串中
BufferedReader
br=new BufferedReader(new FileReader(“s.txt”));
String
line=br.readLine();
br.close();
//把字符串转换为字符数组
char[] chs=line.toCharArray();
//对字符数组进行排序
Arrays.sort(chs);
//把排序后的字符数组转换为字符串
String
s=new String(chs);
//把字符串再次写入ss.txt中
BufferedWriter
bw=new BufferedWriter(new FileWriter(“ss.txt”));
bw.write(s);
bw.newLine();
bw.flush();
bw.close();
}
}
125.文件中指定字符串出現的次數。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) throws IOException{
BufferedReader
reader=new BufferedReader(new FileReader(new File(“wo.txt”)));
String
s = reader.readLine(); //读取行数
System.out.println(“请输入关键字:”);
Scanner
sc=new Scanner(System.in);//从键盘接收数据
String
str=sc.nextLine();
char[] ch=str.toCharArray();
int count=0;
while (s != null){
//确定行数不为空
boolean b=s.contains(str);//子字符串是否被包含在此字符串之中,包含输出true,否则输出false
String[]
st=new String[s.length()-ch.length+1];
if(b==true) {
for(int i=0;i<st.length;i++){
st[i]= s.substring(i,i+ch.length);
if(st[i].equals(str)) {
count++;
}
}
}
s = reader.readLine();
}
System.out.println(“包含
“+str+” 次数为:”+count);//调用count,输出包含次数
}
}