文件IO:文件IO称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O—— *** 作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。
2不同的地方
首先:两者一个显著的不同点在于,标准I/O默认采用了缓冲机制,比如调用fopen函数,不仅打开一个文件,而且建立了一个缓冲区(读写模式下将建立两个缓冲区),还创建了一个包含文件和缓冲区相关数据的数据结构。低级I/O一般没有采用缓冲,需要自己创建缓冲区,不过其实在linix或unix系统中,都是有使用称为内核缓冲的技术用于提高效率,读写调用是在内核缓冲区和进程缓冲区之间进行的数据复制。
其次从 *** 作的设备上来区分,文件I/O主要针对文件 *** 作,读写硬盘等,它 *** 作的是文件描述符,标准I/O针对的是控制台,打印输出到屏幕等,它 *** 作的是字符流。对于不同设备得特性不一样,必须有不同api访问才最高效。
软件开发专业网关注,其实最重要的还是他们各自的函数了;
import java.io.File
import java.io.FileWriter
import java.io.IOException
import java.util.Scanner
public class YuGiOh
{
private static final String LINE = System.getProperty ("line.separator")
private static final String FILE = "io.txt"
private static final String RESULT = "result.txt"
private static final int LEVEL = 48
/**
* 读取文件某一行
*/
private static String readFile ( String file, int line )
{
Scanner scanner = null
try
{
scanner = new Scanner (new File (file))
scanner.skip ("([^" + LINE + "]+" + LINE + "){" + ( line - 1 ) + "}")
if (scanner.hasNextLine ())
{
return scanner.nextLine ()
}
}
catch (Exception ignore)
{}
finally
{
if (null != scanner)
{
scanner.close ()
}
}
return ""
}
private static void writeFile ( String file, String line )
{
FileWriter fw = null
try
{
fw = new FileWriter (file)
fw.write (line)
fw.flush ()
}
catch (IOException e)
{
e.printStackTrace ()
}
finally
{
if (null != fw)
{
try
{
fw.close ()
}
catch (IOException ignore)
{}
}
}
}
public static void main ( String[] args )
{
String line = ""
int count = 1
int one = 0, two = 0
while (!"".equals (line = readFile (FILE, count++)))
{
String[] array = line.split ("\\s+")
int num = Integer.parseInt (array[0].trim ())
int price = Integer.parseInt (array[1].trim ())
if (num < LEVEL)
{
one += price
}
else if (num > LEVEL)
{
two += price
}
}
int max = 0, min = 0
max = one > two ? one : two
min = one < two ? one : two
String result = "high_price\t\t" + max + LINE + "low_price\t\t" + min
writeFile (RESULT, result)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)