- 流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储。
- 与数据源(文件)直接接触读写的,是节点流;中间流与程序进行读写的最终流,是过滤流
import java.io.*;
import java.util.Date;
public class AboutFile
{
public static void main(String[] args)
{
File myFile=new File("C:\\Inetpub\\wwwroot\\iisstart.asp");//注意其他位置的文件如何打开?
//目录和文件级别的操作类,提供文件和目录的信息、创建文件和目录
System.out.println("路径: "+myFile.getParent());
System.out.println("档案: "+myFile.getName());
System.out.println("绝对路径: "+myFile.getAbsolutePath());
System.out.println("文件大小: "+myFile.length());
System.out.println("是否为文件: "+myFile.isFile());
System.out.println("是否为目录: "+myFile.isDirectory());
System.out.println("是否为隐藏: "+myFile.isHidden());
System.out.println("是否可读取: "+myFile.canRead());
System.out.println("是否可写入: "+myFile.canWrite());
System.out.println("最后修改时间:"+new Date(myFile.lastModified()));
//myFile.
}
}
import java.io.*;
import java.io.IOException;
public class AboutFileStream
{
public static void main(String[] args)
{
FileReader inReader;//节点流中的文件流
FileWriter outWriter;
try{
inReader=new FileReader("src\\test1.txt");//相对于项目目录,创建一个文件字符读取流,和文件接上
outWriter=new FileWriter("src\\test2.txt");//创建文件字符输出流,并和文件接上,如果文件不存在,则创建文件
//inReader.
}
catch (IOException e)
{
System.out.println("File can't be found or File creates error.");
return;
}//打开或创建文件时,一定要把语句放进try里,因为发生异常概率很大,这样做可以保证程序不崩溃
BufferedReader inStream=new BufferedReader(inReader);
BufferedWriter outStream=new BufferedWriter(outWriter);
//节点流FileReader与FileWriter是一个一个字符读取的,在过滤流处进行缓冲,把数据积累到一个大数据块后成批写出,实现整行的输入;只有过滤流有readLine()方法,上述两句就是实现节点流与过滤流连接的方法,节点流作为过滤流构造方法的参数
//以上两句代码并无涉及到外部的东西,因此不用放进try里
String str;
int lineNo=0;
try{
while ((str=inStream.readLine())!=null)
{
System.out.println(str);
outStream.write(String.format("%1$03d", lineNo++)+" "+str+"\r\n");
}
inStream.close();//所有流要关闭,养成习惯
outStream.close();
inReader.close();
outWriter.close();
}catch(IOException e)
{
System.out.println("\nIO Errors.");
return;
}
System.out.println("\n\n\nDone!");
}
}
6、 查看文本文件SomeData.txt中的数据并分析其格式,用Java I0 api将其中的所有数据读出,计算出每一行的后4列数据的平均值,存放到新文件AvgSomeData.txt文件中,存放时每一行前面要加上行号(行号占3位,右对齐),平均值放到行末并左对齐。
提示:SomeData中的分隔符是“\t”
将一个浮点数,格式化成一个只有两位小数的字符串用字符串“%1$4.2f”
比如:String.format(“%1$4.2f”, 3456.78909) 结果是: 3456.78
import java.io.*;
public class FileTest
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
FileReader inReader;
FileWriter outWriter;
try
{
inReader=new FileReader("src//SomeData.txt");//相对于项目目录,创建一个文件字符读取流,和文件接上
outWriter=new FileWriter("src//AvgSomeData.txt");//创建文件字符输出流,并和文件接上,如果文件不存在,则创建文件
}
catch (IOException e)
{
System.out.println("File can't be found or File creates error.");
return;
}
BufferedReader inStream=new BufferedReader(inReader);
BufferedWriter outStream=new BufferedWriter(outWriter);
String strLine=null;//用于存放整行数据
String[] str=new String[7];//将整行数据分为7部分存放
float[] avgData=new float[4];//用于存放每行最后4列数据,以便计算平均值
int lineNo=1;//用于输出行号
try
{
while ((strLine=inStream.readLine())!=null)
{
System.out.println(strLine);
str=strLine.toString().split("\t");//SomeData中的分隔符是“\t”
float sum=0;
for(int i=0;i<4;i++)
{
Float f=Float.parseFloat(str[i+3]);
avgData[i]=f;
sum+=avgData[i];
}
outStream.write(String.format("%1$03d",lineNo++)+" 后四列数据平均值为:"+sum/4+"\r\n");
}
inStream.close();//所有流要关闭,养成习惯
outStream.close();
inReader.close();
outWriter.close();
}
catch(IOException e)
{
System.out.println("\nIO Errors.");
return;
}
System.out.println("\n\n\nDone!");
}
}
标准输入输出
import java.io.*;
public class KBInput {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str;
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please input:");
try
{
str=in.readLine();
while(!str.equals("exit"))
{
System.out.println(" read: "+str);
str=in.readLine();
}
System.out.println("End of Inputing.");
in.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}