java怎么从一个文件中随机读取一句话
3个回答
展开全部
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/**
*
* @author sd96800
*
*/
public class TestFile {
public static void main(String []args) throws Exception{
//获取控制台输入流
Scanner systemIn = new Scanner(System.in);
//是否关闭该程序
boolean isClose = true;
//伪随机生成数字
Random rd = new Random();
//进入程序 当在控制台输入random 随机选取一行 输入数字时候 选择数字对应的行 输入exit 退出程序
System.out.println("请输入指定文件名以及路径:");
File file = null;
while(isClose){
file = new File(systemIn.next());
if(file.isFile()){
System.out.println("输入正确!输入数字选择当前文本文档的行,输入random随机选择,输入all显示所有行,输入next 退出!");
isClose = false;
}else{
System.out.println("您所输入的文件名不正确,请重新输入! :");
}
}
//创建该文件的输入流
BufferedReader in = new BufferedReader(new FileReader(file));
//用getReaderStrArray方法返回从当前输入流中读取出来的字符串
List<String> fileStrArray = getReaderStrArray(in);
while(!isClose){
String str = systemIn.next();
if("exit".equals(str)){
System.out.println("关闭Close");
isClose = true;
}else if("random".equals(str)){
System.out.println("随机Random:" + fileStrArray.get(rd.nextInt(fileStrArray.size() - 1)));
}else if("all".equals(str)){
System.out.println("全部All:");
for(int i = 0 ; i < fileStrArray.size() ; i ++){
System.out.println(fileStrArray.get(i));
}
}else{
Integer arrayNum = Integer.parseInt(str);
if(arrayNum > 0){
System.out.println("选择Select:" + fileStrArray.get(arrayNum - 1));
}else{
System.out.println("您输入的数要大于0!error");
}
}
}
}
//把输入流转换成String类型的容器
public static List<String> getReaderStrArray(BufferedReader br) throws IOException{
List<String> strArray = new ArrayList<String>();
while(br.ready()){
strArray.add(br.readLine());
}
return strArray;
}
}
输入流里面只能一行一行的读 没有随机这种方法 我看API上没有
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/**
*
* @author sd96800
*
*/
public class TestFile {
public static void main(String []args) throws Exception{
//获取控制台输入流
Scanner systemIn = new Scanner(System.in);
//是否关闭该程序
boolean isClose = true;
//伪随机生成数字
Random rd = new Random();
//进入程序 当在控制台输入random 随机选取一行 输入数字时候 选择数字对应的行 输入exit 退出程序
System.out.println("请输入指定文件名以及路径:");
File file = null;
while(isClose){
file = new File(systemIn.next());
if(file.isFile()){
System.out.println("输入正确!输入数字选择当前文本文档的行,输入random随机选择,输入all显示所有行,输入next 退出!");
isClose = false;
}else{
System.out.println("您所输入的文件名不正确,请重新输入! :");
}
}
//创建该文件的输入流
BufferedReader in = new BufferedReader(new FileReader(file));
//用getReaderStrArray方法返回从当前输入流中读取出来的字符串
List<String> fileStrArray = getReaderStrArray(in);
while(!isClose){
String str = systemIn.next();
if("exit".equals(str)){
System.out.println("关闭Close");
isClose = true;
}else if("random".equals(str)){
System.out.println("随机Random:" + fileStrArray.get(rd.nextInt(fileStrArray.size() - 1)));
}else if("all".equals(str)){
System.out.println("全部All:");
for(int i = 0 ; i < fileStrArray.size() ; i ++){
System.out.println(fileStrArray.get(i));
}
}else{
Integer arrayNum = Integer.parseInt(str);
if(arrayNum > 0){
System.out.println("选择Select:" + fileStrArray.get(arrayNum - 1));
}else{
System.out.println("您输入的数要大于0!error");
}
}
}
}
//把输入流转换成String类型的容器
public static List<String> getReaderStrArray(BufferedReader br) throws IOException{
List<String> strArray = new ArrayList<String>();
while(br.ready()){
strArray.add(br.readLine());
}
return strArray;
}
}
输入流里面只能一行一行的读 没有随机这种方法 我看API上没有
展开全部
确切来说,你可以用流把文件读出来,然后按你的想法切割,切下来的部分都扔一个Set里面。取出的时候肯定是随机的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public String readFile(String filePath, int lineNum) {
StringBuffer sb = null;
try {
File file = new File(filePath);
if (file.exists()) {
BufferedReader br = new BufferedReader(new FileReader(file));
String temp = null;
sb = new StringBuffer();
int sum = 1;
temp = br.readLine();
if (lineNum == 1) {
return temp;
}
while (temp != null) {
sum++;
sb.append(temp + "\r\n");
temp = br.readLine();
if (sum == lineNum) {
return temp;
}
}
br.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
调这个方法 第一个参数是文件路径,第二个参数是读出第几行,这个数字可以rand!!
StringBuffer sb = null;
try {
File file = new File(filePath);
if (file.exists()) {
BufferedReader br = new BufferedReader(new FileReader(file));
String temp = null;
sb = new StringBuffer();
int sum = 1;
temp = br.readLine();
if (lineNum == 1) {
return temp;
}
while (temp != null) {
sum++;
sb.append(temp + "\r\n");
temp = br.readLine();
if (sum == lineNum) {
return temp;
}
}
br.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
调这个方法 第一个参数是文件路径,第二个参数是读出第几行,这个数字可以rand!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询