Java_IO流

Java_IO流
Java_IO流

IO流

1,流的分类

按照流的流向划分:

输入流:只能从中读取数据,而不能向其写数据。输入流基类,InputStream和Reader。

输出流:只能向其写入数据,而不能从中读取数据。输出流基类,OutputStream和Writer。

按照操作数据单元划分:

字节流:操作最小数据单元是8位的字节。字节流基类,InputStream和OutputStream。

字符流:操作最小数据单元是16位字节。字符流基类,Reader和Writer。

2,Java IO体系

2.1 IO体系图

2.2 IO体系分类图

3,IO流抽象基类

3.1,输入流的抽象基类:InputStream和Reader

InputStream和Reader是所有输入流的基类,它们都是抽象类,本身不能创建实例来执行输入,但它们是所有输入流的模板,所有输入流都使用它们提供的方法。

在InputStream里包含如下三个方法:

》》int read():从输入流中读取单个字节,返回所读取的字节数据(字节数据可直接转换为int类型)。

》》int read(byte[] b):从输入流中读取最多b.length个字节的数据,并将其存储在字节数组b 中,赶回实际读取的字节数。

》》int read(byte[] b,int off,int len):从输入流中读取最多len字节的数据,并将其从off位置开始存储在数组b中,返回实际读取的字节数。

在Reader里包含如下三个方法:

》》int read():从输入流中读取单个字符,返回所读取的字符数据(字符数据可直接转换为int类型)。

》》int read(char[] cbuf):从输入流中读取最多cbuf.length个字符的数据,并将其存储在字符数组cbuf中,赶回实际读取的字符数。

》》int read(char[] cbuf,int off,int len):从输入流中读取最多len字符的数据,并将其从off位置开始存储在数组cbuf中,返回实际读取的字符数。

3.2,输出流的抽象基类:OutputStream和Writer

OutputStream和Writer和前面的输入流相似,两个流都提供了如下三个方法:

》》void write(int c):将指定的字节/字符输出到输出流中,其中c代表字节或者字符。

》》void write(byte[]/char[] buf):将字节数组/字符数组中的数据输出到指定的输出流中。》》void write(byte[]/char[] buf,int off,int len):将字节数组/字符数组中从off位置开始,长度为len的字节/字符输出到指定的输出流中。

因为字符流直接以字符作为操作单位,所以Writer可以用字符串来代替字符数组,即以String对象作为参数。Writer里还包含如下两个方法:

》》void write(String str):将字符串str里包含的字符输出到指定的输出流中。

》》void write(String str,int off,int len):将字符串str从off位置开始,长度为len的字符输出到指定输出流中。

4,IO流程序异常处理的标准方式

import java.io.*;

class FileWriterDemo2

{

public static void main(String[] args)

{

FileWriter fw = null;

try

{

fw = new FileWriter("c:\\demo.txt");

fw.write("abcde");

}

catch (IOException e)

{

//异常处理方式

System.out.println(e.toString());

}

finally

{

try

{

if(fw!=null)

fw.close();

}

catch (IOException e)

{

//异常处理方式

System.out.println(e.toString());

}

}

}

}

5,流与流之间相对应的关系

图5.1 字节输入流与输出流的对应关系

图5.2,字符输入流与输出流的对应关系

6,实现IO的子类

6.1,字符流

1,FileWriter

构造方法:

FileWriter(String fileName):根据给定的文件名构造一个FileWriter对象。

FileWriter(String fileName, boolean append):根据给定的文件名以及指示是否附加写入数据的boolean值来构造FileWriter对象。

常用方法:

void close():关闭此流,但要先刷新它。

void flush():刷新该流的缓冲。

void write(char[] cbuf) :写入字符数组。

void write(char[] cbuf, int off, int len) :写入字符数组的某一部分。

void write(int c) :写入单个字符。

void write(String str) :写入字符串。

void write(String str, int off, int len) :写入字符串的某一部分。

2,FileReader

构造方法:

FileReader(String fileName):在给定从中读取数据的文件名的情况下创建一个新FileReader。常用方法:

void close() :关闭该流并释放与之关联的所有资源。

int read() :读取单个字符。

int read(char[] cbuf) :将字符读入数组。

int read(char[] cbuf, int off, int len) :将字符读入数组的某一部分。

3,BufferedWriter

构造方法:

BufferedWriter(Writer out):创建一个使用默认大小输出缓冲区的缓冲字符输出流。

常用方法:

void close():关闭此流,但要先刷新它。

void flush():刷新该流的缓冲。

void newLine():写入一个行分隔符,该方法具有跨平台性。

void write(char[] cbuf) :写入字符数组。

void write(char[] cbuf, int off, int len):写入字符数组的某一部分。

void write(int c):写入单个字符。

void write(String str) :写入字符串。

void write(String s, int off, int len):写入字符串的某一部分。

4,BufferedReader

构造方法:

BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符输入流。

常用方法:

void close():关闭该流并释放与之关联的所有资源。

int read():读取单个字符。

int read(char[] cbuf):将字符读入数组。

int read(char[] cbuf, int off, int len):将字符读入数组的某一部分。

String readLine():读取一个文本行。当读取到文件末尾时,返回null。

5,LineNumberReader:是BufferedReader的子类,带行号操作的类

构造方法:

LineNumberReader(Reader in):使用默认输入缓冲区的大小创建新的行编号reader。常用方法:

int getLineNumber():获得当前行号。

void mark(int readAheadLimit):标记该流中的当前位置。

int read():读取单个字符。

int read(char[] cbuf, int off, int len):将字符读入数组中的某一部分。

String readLine():读取文本行。

void setLineNumber(int lineNumber):设置当前行号。

void close():关闭流。

6,代码演示:复制纯文本文件

import java.io.*;

public class CopyTextDemo {

public static void main(String[] args) throws IOException {

// copy_one();

// copy_two();

copy_three();

}

// 使用字符缓冲流,提高效率

public static void copy_three() throws IOException {

BufferedReader bfr = new BufferedReader(new FileReader("c:\\demo.java"));

BufferedWriter bfw = new BufferedWriter(new FileWriter("c:\\demo.txt"));

String line = null;

while ((line = bfr.readLine()) != null) {

bfw.write(line);

// 换行,因为readLine方法写入时,不包含换行符

bfw.newLine();

bfw.flush();

}

bfr.close();

bfw.close();

}

// 使用字符数组进行缓冲,一次读取,一次写入,效率高

public static void copy_two() throws IOException {

FileReader fr = new FileReader("c:\\demo.java");

FileWriter fw = new FileWriter("c:\\demo_copy.txt");

char[] buf = new char[1024];

int len = 0;

while ((len = fr.read(buf)) != -1) {

fw.write(buf, 0, len);

}

fr.close();

fw.close();

}

// 读一个字符,写一个字符,这种方法效率很低下

public static void copy_one() throws IOException {

FileReader fr = new FileReader("c:\\demo.java");

FileWriter fw = new FileWriter("c:\\demo_copy.txt");

int len = 0;

while ((len = fr.read()) != -1) {

fw.write((char) len);

}

fr.close();

fw.close();

}

}

====================================================================== 6.2,字节流

1,FileOutputStream:

构造方法:

FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流。FileOutputStream(String name, boolean append):创建一个向具有指定name 的文件中写入数据的输出文件流

常用方法:

void close():关闭此文件输出流并释放与此流有关的所有系统资源。

void write(byte[] b):将b.length 个字节从指定byte 数组写入此文件输出流中。

void write(byte[] b, int off, int len):将指定byte 数组中从偏移量off 开始的len 个字节写入此文件输出流。

void write(int b):将指定字节写入此文件输出流。

2,FileInputStream:

构造方法:

FileInputStream(String name):通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name 指定。

常用方法:

int available():返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。

void close():关闭此文件输入流并释放与此流有关的所有系统资源。

int read():从此输入流中读取一个数据字节。

int read(byte[] b):从此输入流中将最多b.length 个字节的数据读入一个byte 数组中。

int read(byte[] b, int off, int len):从此输入流中将最多len 个字节的数据读入一个byte 数组

中。

3,BufferedOutputStream:

构造方法:

BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

常用方法:

void close():关闭此输出流并释放与此流有关的所有系统资源。

void flush():刷新此缓冲的输出流。

void write(byte[] b, int off, int len):将指定byte 数组中从偏移量off 开始的len 个字节写入此缓冲的输出流。

void write(int b):将指定的字节写入此缓冲的输出流。

void write(byte[] b):将b.length 个字节写入此输出流。

4,BufferedInputStream:

构造方法:

BufferedInputStream(InputStream in):创建一个BufferedInputStream 并保存其参数,即输入流in,以便将来使用。

常用方法:

int available():返回可以从此输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。

void close():关闭此输入流并释放与该流关联的所有系统资源。

int read():从此输入流中读取下一个数据字节。

int read(byte[] b):从此输入流中将byte.length 个字节的数据读入一个byte 数组中。

int read(byte[] b, int off, int len):从此字节输入流中给定偏移量处开始将各字节读取到指定的byte 数组中。

====================================================================== 6.3,转换流

1,InputStreamReader:读取转换流。字节流通往字符流的桥梁。

常用方法:InputStreamReader(InputStream in):创建一个使用默认字符集的InputStreamReader。

沿用java.io.Reader类中的方法,但是基本上只起桥梁作用,实际上该流最终会被缓冲区操作。BufferedReader。

2,OutputStreamWriter:写入转换流。字符流通往字节流的桥梁。

常用方法:OutputStreamWriter(OutputStream out):创建使用默认字符编码的OutputStreamWriter。

沿用java.io.Writer类中的方法,但是基本上只起桥梁作用,实际上最终被缓冲区操作。

3,演示代码

/*

需求1

在控制台录入信息,将录入的文字存入到文件

源:键盘

目的:文件

需求2

在控制台打印文件的内容

源:文件

目的:控制台

*/

import java.io.*;

class TransStreamDemo{

public static void main(String[] args) throws IOException { // readKeywordToFile();

readFileToConsole();

}

public static void readKeywordToFile() throws IOException { // 创建数据源

InputStream in = System.in;

InputStreamReader isr = new InputStreamReader(in);

BufferedReader bfr = new BufferedReader(isr);

// 创建数据目的

FileOutputStream fos = new FileOutputStream("c:\\out.txt");

OutputStreamWriter osr = new OutputStreamWriter(fos);

BufferedWriter bfw = new BufferedWriter(osr);

// 操作

String line = null;

while ((line = bfr.readLine()) != null) {

if ("over".equals(line))

break;

bfw.write(line.toUpperCase());

bfw.newLine();

bfw.flush();

}

bfr.close();

bfw.close();

}

public static void readFileToConsole() throws IOException { // 数据源

FileInputStream fis = new FileInputStream("c:\\demo.java");

InputStreamReader isr = new InputStreamReader(fis);

BufferedReader bfr = new BufferedReader(isr);

// 数据目的

OutputStream out = System.out;

OutputStreamWriter osw = new OutputStreamWriter(out);

BufferedWriter bfw = new BufferedWriter(osw);

// 操作

String line = null;

while ((line = bfr.readLine()) != null) {

bfw.write(line);

bfw.flush();

bfw.newLine();

}

bfr.close();

bfw.close();

}

}

====================================================================== 6.4,File类

属性:

static String separator:与系统有关的默认名称分隔符

构造方法:

File(File parent, String child):根据parent 抽象路径名和child 路径名字符串创建一个新File 实例。

File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新File 实例。File(String parent, String child):根据parent 路径名字符串和child 路径名字符串创建一个新File 实例。

一般方法:

1)创建

boolean createNewFile():在指定位置创建文件,如果文件已经存在,则不创建,返回false。

和输出流不一样,输出流对象一定创建文件,如果文件已存在,会覆盖旧文件。

boolean mkdir():创建单级目录。

boolean mkdirs():创建多级目录。

2)删除

boolean delete():删除此抽象路径名表示的文件或目录,若文件或目录不存在,返回false。

注意:当删除某个目录时,若目录里有文件存在,则不可删除,返回false。void deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

3)判断

boolean exists():测试此抽象路径名表示的文件或目录是否存在。

boolean isDirectory():判断是否是目录。

boolean isFile():判断是否是文件。

注意:判断文件对象是否是文件或者目录时,必须先通过exists()方法判断该文件对象是否存在。

boolean isAbsolute():测试此抽象路径名是否为绝对路径名。

boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。

boolean canRead():判断File对象所对应的文件或者目录是否可读。

boolean canWrite():判断File对象所对应的文件或者目录是否可写。

4)获取信息

File getAbsoluteFile():返回此抽象路径名的绝对路径名形式。

String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。

File getCanonicalFile():返回此抽象路径名的规范形式。

String getCanonicalPath():返回此抽象路径名的规范路径名字符串。

long getFreeSpace():返回此抽象路径名指定的分区中未分配的字节数。

String getName():返回由此抽象路径名表示的文件或目录的名称。

String getParent():返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。

File getParentFile():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回null。

String getPath():将此抽象路径名转换为一个路径名字符串。

long getTotalSpace():返回此抽象路径名指定的分区大小。

long getUsableSpace():返回此抽象路径名指定的分区上可用于此虚拟机的字节数。

long length():返回由此抽象路径名表示的文件的长度。

static File[] listRoots():列出可用的文件系统根。

String[] list():列出File对象所有的子文件和路径名,返回String数组。

String[] list(FilenameFilter filter):返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[] listFiles():列出File对象所有的子文件和路径,返回File数组。

演示代码:

/*

将指定目录下的所有Java文件的绝对路径全部输出到文本文件中保存

方法:递归

用集合存储

*/

import java.util.*;

import java.io.*;

class JavaFileList {

public static void main(String[] args) throws IOException {

File file = new File("e:\\JavaStudy");

List list = new ArrayList();

fileToList(file, list);

File files = new File(file, "java.txt");

writeToFile(list, files.toString());

}

public static void fileToList(File file, List list)

throws IOException {

File[] dir = file.listFiles();

for (int x = 0; x < dir.length; x++) {

if (dir[x].isDirectory())

fileToList(dir[x], list);

else {

if (dir[x].getName().endsWith(".java"))

;

list.add(dir[x]);

}

}

}

public static void writeToFile(List list, String javaListFile)

throws IOException {

BufferedWriter bfw = new BufferedWriter(new FileWriter(javaListFile));

for (File f : list) {

String path = f.getAbsolutePath();

bfw.write(path);

bfw.newLine();

bfw.flush();

}

bfw.close();

}

}

====================================================================== 6.5,Properties类

Properties是hashtable的子类。

它具备Map集合的特点,而且它里面存储的键值对都是字符串,是集合中和IO流技术相结合的集合容器。

特点:可以用于键值对形式的配置文件。

常用方法:

String getProperty(String key):用指定的键在此属性列表中搜索属性。

String getProperty(String key, String defaultValue):用指定的键在属性列表中搜索属性。

void list(PrintStream out):将属性列表输出到指定的输出流。

void list(PrintWriter out):将属性列表输出到指定的输出流。

void load(InputStream inStream):从输入流中读取属性列表(键和元素对)。

void load(Reader reader):按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

Object setProperty(String key, String value):调用Hashtable 的方法put,设置键值对。

void store(OutputStream out, String comments)以适合使用load(InputStream):方法加载到Properties 表中的格式,将此Properties 表中的属性列表(键和元素对)写入输出流。void store(Writer writer, String comments)以适合使用load(Reader):方法的格式,将此Properties 表中的属性列表(键和元素对)写入输出字符。

Set stringPropertyNames():返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。

====================================================================== ========================================================

6.6,打印流

1,PrintStream

构造方法:

PrintStream(File file):创建具有指定文件且不带自动行刷新的新打印流。

PrintStream(File file, String csn):创建具有指定文件名称和字符集且不带自动行刷新的新打印流。

PrintStream(OutputStream out):创建新的打印流。

PrintStream(OutputStream out, boolean autoFlush):创建新的打印流。

PrintStream(OutputStream out, boolean autoFlush, String encoding):创建新的打印流。PrintStream(String fileName):创建具有指定文件名称且不带自动行刷新的新打印流。PrintStream(String fileName, String csn):创建具有指定文件名称和字符集且不带自动行刷新的新打印流。

一般方法:

void close():关闭流。

void flush():刷新该流的缓冲。

print方法:各种数据类型的打印方法。详情见jdk1.6 api

println方法:各种数据类型的带换行的打印方法。详情见jdk1.6 api

注意:

由于PrintStream类的输出功能非常强大,通常如果我们需要输出文本内容,都应该讲输出流包装成PrintStream后进行输出。

当使用处理流来包装底层节点流之后,关闭输入/输出流资源时,只要关闭最上层的处理流即可。关闭最上层的处理流,系统会自动

关闭被该处理流包装的节点流。对于下面介绍的PrintWrite类,同样适用。

2,PrintWriter

构造方法:

PrintWriter(File file):使用指定文件创建不具有自动行刷新的新PrintWriter。

PrintWriter(File file, String csn):创建具有指定文件和字符集且不带自动刷行新的新PrintWriter。

PrintWriter(OutputStream out):根据现有的OutputStream 创建不带自动行刷新的新PrintWriter。

PrintWriter(OutputStream out, boolean autoFlush):通过现有的OutputStream 创建新的PrintWriter。

PrintWriter(String fileName):创建具有指定文件名称且不带自动行刷新的新PrintWriter。PrintWriter(String fileName, String csn):创建具有指定文件名称和字符集且不带自动行刷新的新PrintWriter。

PrintWriter(Writer out):创建不带自动行刷新的新PrintWriter。

PrintWriter(Writer out, boolean autoFlush):创建新PrintWriter。

一般方法:

void close():关闭该流并释放与之关联的所有系统资源。

void flush():刷新该流的缓冲。

void write(char[] buf):写入字符数组。

void write(char[] buf, int off, int len):写入字符数组的某一部分。

void write(int c):写入单个字符。

void write(String s):写入字符串。

void write(String s, int off, int len):写入字符串的某一部分

print方法:打印各种数据类型的方法。详情见jdk1.6 api

println方法:带换行打印各种数据类型的方法。详情见jdk1.6 api

====================================================================== 6.7,对象序列化

对象序列化,也称作对象的持久化。是指将对象从堆内存中转移到硬盘的文件中保存,以方便下次程序运行直接取出来用,

而不需要重新在内存中创建相同的对象。执行对象序列化需要用到两个功能流进行操作,ObjectOutputStream和ObjectInputStream。

1,ObjectOutputStream

构造方法:

ObjectOutputStream(OutputStream out):创建写入指定OutputStream 的ObjectOutputStream。常用方法:

void close():关闭流。

void flush():刷新该流的缓冲。

void writeObject(Object obj):将指定的对象写入ObjectOutputStream。

其它写入各种数据类型的write方法,详情请查阅jdk1.6 api

2,ObjectInputStream

构造方法:

ObjectInputStream(InputStream in):创建从指定InputStream 读取的ObjectInputStream。

常用方法:

void close():关闭输入流。

Object readObject():从ObjectInputStream 读取对象。

其它读取各种数据类型的read方法,详情请查阅jdk1.6 api

3,注意:

(1)自定义序列号:public static final long serialVersionUID = 数值;

(2)静态成员不能被序列化

(3)若想让非静态成员不被序列化,在非静态成员前加关键字transient 声明。

====================================================================== 6.8,RandomAccessFile

该类不算是IO体系中的子类,而是直接继承自Object。但是它是IO包中的成员,因为它具有读写功能。

内部封装了一个数组,而且通过指针对数组的元素进行操作。

可以通过getFilePointer获取指针的位置,同时可以通过seek改变指针的位置。

该类能够完成读写的原理其实是其内部封装了字节的输入流和输出流。

通过构造方法可以看出,该类只能操作文件,而且操作文件还有模式。只读"r",读写"rw"等。

而且调用该对象的构造方法时,

如果模式为"r",不会创建文件。会去读取一个已存在的文件,若文件不存在,则报异常。如果模式为"rw",如果文件不存在,就新建文件,如果文件已经存在,不会覆盖原文件。

构造方法:

RandomAccessFile(File file, String mode):创建从中读取和向其中写入(可选)的随机访问文件流,该文件由File 参数指定。

RandomAccessFile(String name, String mode):创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。

模式:

"r" :以只读方式打开。调用结果对象的任何write 方法都将导致抛出IOException。"rw" :打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。

"rws":打开以便读取和写入,对于"rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。

"rwd":打开以便读取和写入,对于"rw",还要求对文件内容的每个更新都同步写入到底层存储设备。

常用方法:

void close():关闭此随机访问文件流并释放与该流关联的所有系统资源。

long length():返回此文件的长度。

int read():从此文件中读取一个数据字节。

String readLine():从此文件读取文本的下一行。

void seek(long pos):设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。

int skipBytes(int n):调整文件指针,尝试跳过输入的n 个字节以丢弃跳过的字节。

void write(byte[] b):将b.length 个字节从指定byte 数组写入到此文件,并从当前文件指针开始。

void write(byte[] b, int off, int len):将len 个字节从指定byte 数组写入到此文件,并从偏移量off 处开始。

还有不同数据类型数据的read方法。详情查阅jdk1.6 api

还有不同数据类型数据的write方法。详情查阅jdk1.6 api

====================================================================== 7,流的操作规律

1)明确源和目的。

数据源:就是需要读取,可以使用两个体系:InputStream、Reader;

数据目的:就是需要写入,可以使用两个体系:OutputStream、Writer;

2)操作的数据是否是纯文本数据?

如果是:数据源:Reader

数据目的:Writer

如果不是:数据源:InputStream

数据目的:OutputStream

3)虽然确定了一个体系,但是该体系中有太多的对象,到底用哪个呢?

明确操作的数据设备。

数据源对应的设备:硬盘(File),内存(数组),键盘(System.in)

数据汇对应的设备:硬盘(File),内存(数组),控制台(System.out)。

4)需要在基本操作上附加其他功能吗?比如缓冲。

如果需要就进行装饰。

====================================================================== 8,重定向标准输入/输出

Java的标准输入输出分别通过System.in和System.out来代表,默认情况下它们分别代表键盘和控制台,当程序通过System.in来获取输入时,实际上是从键盘读取输入;当程序试图通过System.out执行输出时,程序总是输出到控制台。

在System类里提供了三个重定向标准输入/输出的方法:

》》static void setErr(PrintStream err):重定向“标准”错误输出流、

》》static void setIn(InputStream in):重定向“标准”输入流。

》》static void setOut(PrintStream out):重定向“标准”输出流。

堰流和闸孔出流能力计算

第七章 堰流和闸孔出流能力计算 一、选择题 1、作用水头相同时,孔口的过流量要比相同直径的管咀过流量 (1)大 (2)小 (3)相同 (4)无法确定 。 2、堰流的流量与堰顶水头的( )成正比。 (1)1/2次 (2)3/2次方 (3)2次方 (4)1次方 3、闸孔出流的流量与闸前水头( )成正比 (1)1次方 (2)2次方 (3)0.5次方 4、对WES 曲线型实用堰来说,当实际水头小于设计水头时,实用堰的实际过水能力( )设计过水能力。 (1)大于 (2)小于 (3)等于 (4)不一定 5、发生水跃是水流由 (1)缓流过渡到急流 (2)临界流过渡到急流 (3)急流过渡到急流 (4)急流过渡到缓流 6、当堰厚为δ,堰上水头为H ,那么0.67

2、何谓堰流,堰流的类型有哪些?如何判别? 3、下图中的溢流坝只是作用水头不同,其它条件完全相同,试问:流量系数哪个大?哪个小?为什么? 四、计算题 1、如图所示曲线型实用堰上的单孔平板闸孔泄流,闸门底缘斜面朝向下游,当闸门开 度e=1m 时,其泄流量Q = 24.33m /s ,闸孔宽b= 4m ,试求:堰上水头H 。 2、一曲线型实用堰,堰顶设有弧型闸门,如下图所示。已知堰顶宽度b=10m ,堰顶水头H=6m ,闸门开度e=2m ,不计行近流速,闸下游为自由出流。试求闸孔泄流量Q 。 (流量系数H e 19.0685.0-=μ) 3、有一三角形薄壁堰,堰口夹角090=θ,夹角顶高程来0.6m,溢流时上游水位为0.82m, 下游水位为0.4m ,求流量。 4、为了灌溉需要,在某河修建拦河溢流坝一座,如图所示。溢流坝采用堰顶上游为三圆弧段的WES 型 实用堰剖面。(单孔边墩为圆弧形)坝的设计洪水流量为540s m /3 ,相应上、下游设计 洪水位分别为50.7m 和48.1m 。坝址处河床高为38.5m ,坝前河道过水断面面积为5242m .根据灌溉水位要求,已确定坝顶高程为48.0m ,求:坝的溢流宽度B 。

IO流题目

狂翔IT工作室IO流章节题目 一.选择题 1.java语言提供处理不同类型流的类的包是(D) a)java.sql b) java.util c) java.math d) java.io 2.不属于java.io包中的接口的一项是(c) a)DataInput b) DataOutput c) DataInputStream d) ObjectInput 3.java.io包中提供的用于筛选文件名的接口是(d) a)DataInput b) DataOutputStream c)RandomAccessFile d) FileNameFilter 4.下列中,哪一个是filterInputStream类构造方法的有效参数c a)无参数b)OutputStream对象 c) InputStream对象d)RandomAccessFile对象 5. ByteArrayOutputStream将下列哪一项作为输出流 c a) 字符b)字节c)字节数组D)对象 6. 下列流中哪一个使用了缓冲区技术A A.BuffereOutputStream B. FileInputStream C. DataOutputStream D.FileReader 7. 下列哪个包中含有压缩文件输入流ZipInputStream类B A.java.io B. java.util.zip C.java.util.jar D.java.awt 8. 要在磁盘上创建一个文件,可以使用哪些类的实例 A.File B.FileOutputStream C.RandomAccessFile D.以上都对 9.下列字节输入流中,哪一个不能够被实例化B A.FileInputStream B.FilterInputStream C.ByteArrayInputStream D.ObjectInputStream 10. 能对读入字节数据进行java基本数据类型判断过滤的类是(C) A. PrintStream B.DataOutputStream C.DataInputStream D.BuffereInputStream 11. 使用下列哪一个类可以实现在文件的任意一个位置读写一个记录 A.RandomAccessFile B.FileReader C.FileWriter D.FileInputStream 12.通常情况下,下列哪一个类的对象可以作为BufferedReader类的构造函数的参数 A.InputStreamReader B.PrintStream C.OutputStreamReader D.PrintWriter 13. 若要创建一个新的含有父目录的目录,应该使用下列哪一个类的实例 A.RandomAccessFile B.FileOutputStream C.File D.以上都对 14. 流的概念是由以下哪个语言最先引的 A.C B.C++ C.Java D.Basic 15. 下列哪一个不属于计算机常用的外部设备 A.显示器 B.网络 C.内存 D.键盘 16. 与InputStream流相对应的Java系统的标准输入对象是 A.System.in B.System.out C.System.err D.System.exit() 17. 下列File类的方法中,哪一个用于返回文件的相对的文件名 A.getCanonicalPath() B.getAbsolutePath()

换货流程

第十章-SM10_换货流程 1.流程说明 该流程是为客户换货及最终责任判定的过程。客诉人员创建客诉发货订单,对于自制产品和有费OEM产品(即需有费向OEM厂商采购的商品),系统自动产生需求,答交确认。可用性检查通过后,创建出货单并排车。等到货物入仓后,发车。对于无费OEM商品,客诉处理人员需要在创建客诉发货订单时修改需求类型,在系统外操作。客诉处理人员修改客户服务通知单转至采购部。采购部将打印客户通知单中的描述信息,并通知OEM厂商,与其确认回复。(目前,由于时效问题,客诉处理人员将客诉单传给OEM厂商,直接与OEM厂商联系确认时间,同时将客诉单传给采购部门一份)。OEM厂商商品入仓时,仓库以特殊的物料转移状态收货。 对于退货部分,全部操作一样。客诉处理人员参照客诉发货订单创建客诉退货订单,并根据客诉退货订单创建退货单。退回货物入仓后,采购部、品保部、服务部门需要再次责任判定,三方会签是否厂商责任。如果原来判断为OEM厂商责任,现判定不是OEM厂商责任,客诉人员凭三方责任判定书通知采购部直接补建采购订单。如果原来判断为不是OEM厂商责任,现判定是OEM厂商责任,需要凭三方责任判定书通知采购部和财务部作调整。 2.流程图

3.系统操作 3.1.操作范例 例1:创建免费订单(发货单):客诉处理换货。 例2:查询库存:查看所需的零部件库存,决定是否库存出货。 例3:退货订单:根据发货单修改退货订单。 例4:修改需求类型 例5:修改客户服务通知单:根据原通知单修改其内容。 3.2.系统菜单及交易代码 例1:后勤?客户服务?服务处理?订单?销售订单?创建?立即 交易代码:VA01

堰流公式

第八章 堰流及闸孔出流 水利工程中,为防洪、灌溉、航运、发电等要求,需修建溢流坝、水闸等控制水流的水工建筑物。例如,溢流坝、 水闸底槛、桥孔和无压涵洞进口等。 堰是顶部过流的水工建筑物。 图1、2中过堰水流均未受闸门控制影响 闸孔出流:过堰水流受闸门控制时,就是孔流 堰流和闸孔出流是两种不同的水流现象。它们的不同点在于堰流的水面线为一条光滑曲线且过水能力强,而孔流的闸孔上、下游水面曲线不连续且过水能力弱。它们的共同点是壅高上游水位;在重力作用下形成水流运动;明渠急变流在较短范围内流线急剧弯曲,有离心力;出流过程的能量损失主要是局部损失。 相对性: 堰流和孔流是相对的,堰流和孔流取决于闸孔相对开度,闸底坎及闸门(或胸墙) 型式以及上游来流条件(涨水或落水)。 平顶堰: e /H ≤0.65 孔 流 曲线型堰:e/H ≤ 0.75 孔 流 e/H > 0.75 堰 e/H >0.65 堰 流 式中:e 为 闸孔开度; H 为 堰上水头 堰流及孔流是水利工程中常见的水流现象,其水力计算的主要任务是研究过水能力。它包括堰闸出流水力特性和堰闸水力计算。 图4 闸孔出流 e H H v 0 图1 堰流 b H 图2 堰流 b e 图3 堰流及闸孔出流 H

第一节堰流的分类及水力计算基本公式 一、堰流的分类 水利工程中,常根据不同建筑材料,将堰作成不同类型。例如,溢流坝常用混凝土或石料作成较厚的曲线或者折线型;实验室量水堰一般用钢板、木板作成薄堰壁。 堰外形、厚度不同,能量损失及过水能力不同。 堰前断面:堰上游水面无明显下降的0-0 断面 堰上水头:堰前断面堰顶以上的水深,用H 表示 行进流速:堰前断面的流速称为行进流速,用v0表示 堰前断面距离上游壁面的距离:L =(3~5) H 研究表明,流过堰顶的水流型态随堰坎厚度与堰顶水头之比δ/H 而变,工程上,按δ与H的大小将堰流分薄壁堰、实用堰、宽顶堰。 1. 薄壁堰:δ/H<0.67 越过堰顶的水舌形状不受堰厚影响,水舌下缘与堰顶为线接触,水面呈降落线。由于堰顶常作成锐缘形,故薄壁堰也称锐缘堰。 2. 实用堰流:0.67 <δ/H <2.5 水利工程,常将堰作成曲线型,称曲线型实用堰。堰顶加厚,水舌下缘与堰顶为面接触,水舌受堰顶约束和顶托,已影响水舌形状和堰的过流能力。折线型实用堰:水利工程,常将堰作成折线形。 3. 宽顶堰:2.5<δ/ H<10 宽顶堰堰顶厚度对水流顶托非常明显。 水流特征:水流在进口附近的水面形成降落;有一段水流与堰顶几乎平行;下游水位较低时,出堰水流二次水面降。 4. 明渠水流:堰坎厚度δ>10H 0 v0 H δ 1 1 图6 曲线型实用堰 P v v H P 1 1 δ 图7 折线型实用堰 当水流接近堰顶,流线收缩,流速加大,自由表面逐渐下降 H P1 v0 1 11v1 P2 δ 图5 薄壁堰

学困生转化过程材料

学困生转化过程材料 The Standardization Office was revised on the afternoon of December 13, 2020

学困生转化案例1 一、学困生基本情况 朱文龙,男生,18岁。 家庭经济状况:家庭经济状况条件较好; 父母学历:高中 父母职业:个体 二、不良行为类型 (1)行为方面: 学习成绩不稳定,高一下学期成绩退步得比较厉害。由于上课注意力不集中,作业要求经常搞不清楚,经常拖拉作业或不知道要交作业, (2)学习方面: 学习兴趣不强,学习习惯不稳定;有时拖拉作业。上课注意力不够集中,没有持久性;做事容易懒散,不能坚持,自信心不足。 三、教育的过程 1、“让学困生抬起头来。 甲是一个懂道理的学生,每次和他交流都能意识到自己的问题,但是日常行为和学习习惯不能得到明显的进步。一次交流,发现他很有上进心,但是不知道该怎么做,虽然嘴上不承认,但是他内心并不自信。抓住这一点,我让他从尽量少让老师批评入手。他一有进步,我就及时抓住了他的的“闪光点”,在班上大加表扬。几周后,他的状态有所好转,再也不迟到了,上课也能听点课,除了有时打瞌睡,课堂上再也没有其他违纪现象,能够及时上缴各课作业。这样的状态对他本人来讲已经是取得了很大的进步。 2、尊重学生,维护学生的自尊心

在教育实践中,我首先对所有的学生一视同仁,平等相待,不冷落歧视后进生,而是给予更多的关心和爱护,只要他们有一点进步,就要及时予以鼓励和肯定,一旦他们切实感到老师在真心诚意地尊重他们,帮助他们时,他们就会很自然地产生肯定的心理倾向,自觉接受帮助,从而达到转化目的。“我们极希望获得别人的赞扬,同时我们也极害怕别人的指责。”教师尊重学生是学生进步的外因, 学生自尊自强是他们进步的内因。尊重学生, 学生就会向老师敞开心扉, 用全心来接受教师的爱。 通过在校的半年的教育和帮助,甲的进步是明显的,首先是迟到的现象明显减少了,在课堂上能自觉遵守纪律,跟随老师的思路完成学习任务。课后基本能按时完成作业,在课代表的提醒下及时上交相应的作业。学习成绩有较大的进步。各任课教师认为该生进步很大,转变明显。在课余时间,该生加入学校乐队,在乐队中找到的的爱好和乐趣,每天课余时间认真训练,掌握一门音乐才能,拉二胡的水平明显提高,深得指导教师的好评。 学困生转化案例2 一、学困生基本情况 刘苗,女生,16岁。 家庭结构:双亲家庭,父母在外打工,随奶奶生活 家庭经济状况:家庭经济状况条件一般; 父母学历:初中 二、不良行为类型 (1)行为方面:

公司内部Javaio流笔试题

公司内部Javaio流笔试题

IO 框架 Key Point * File 类 * 流的分类 * 基本字节流 * 字节过滤流 * 基本字符流、桥转换 * 字符过滤流 * 对象序列化 练习 1. (File 类)以下关于File 类说法正确的是: A.一个File 对象代表了操作系统中的一个文件或者文件夹 B.能够使用File 对象创立和删除一个文件 C.能够使用File 对象创立和删除一个文件夹 D.当一个File 对象被垃圾回收时,系统上对应的文件或文件夹也被删除2. (File 类)有如下代码: public class TestFile{ public static void main(String args[]){ File file = new File(“chp13/corejava.txt”); } } 请选择一个正确答案: A. corejava.txt 文件在系统中被创立 B. 在windows 系统上运行出错,因为路径分隔符不正确 C. corejava.txt 文件在系统中没有被创立

D. 如果corejava.txt 文件已存在,则抛出一个异常 3. (File 类)将下列代码补充完整 class TestMyFile{ public static void main(String args[]) throws Exception{ File file; //创立一个File 对象表示当前目录下的“hello.txt”文件 //判断该文件是否存在 //如果该文件存在,则输出该文件的完整路径 } } 4. (流的分类)对于FileInputStream 来说,从方向上来分,它是_________流,从数据单 位上分,它是__________流,从功能上分,它是____________流。 5. (字节流, FileInputStream)FileInputStream 有三个重载的read 方法,其中 1) 无参的read 方法返回值为___类型,表示_________________ 2) int read(byte[] bs)方法返回值表示______________,参数表示 ________________ 3) int read(byte[] bs, int offset, int len) 方法返回值表示 _______________,参数分别表示 ___________________________。 6. (FileInputStream)下面关于FileInputStream 类型说法正确的是: A.创立FileInputStream 对象是为了读取硬盘上的文件 B.创立FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常 C.利用FileInputStream 对象能够创立文件 D.FileInputStream 对象读取文件时,只能读取文本文件。

宽顶堰流的水力计算

宽顶堰流的水力计算

宽顶堰流的水力计算 https://www.360docs.net/doc/1814161729.html,/zhangj/151/show.aspx?id=255&cid=3 2 如图所示,水流进入有底坎的堰顶后,水流在垂直方向受到堰坎边界的约束,堰顶上的过水断面缩小,流速增大,势能转化为动能。同时堰坎前后产生的局部水头损失,也导致堰顶上势能减小。所以宽顶堰过堰水流的特征是进口处水面会发生明显跌落。从水力学观点看,过水断面的缩小,可以是堰坎引起,也可以是两侧横向约束引起。当明渠水流流经桥墩、渡槽、隧洞〈或涵洞)的进口等建筑物时,由于进口段的过水断面在平面上收缩,使过水断面减小,流速加大,部分势能转化为动能,也会形成水面跌落,这种流动现象称为无坎宽顶堰流,仍按宽顶堰流的方法进行分析、计算。 (一)流量系数

宽顶堰的流量系数取决于堰的进口形状和堰的相对高度,不同的进口堰头形状,可按下列方法确定。 1、进口堰头为直角 (8-22) 2、进口堰头为圆角 (8-23) 3、斜坡式进口 流量系数可根据及上游堰面倾角由表选取。 在公式(8-22)、(8-23)中为上游堰高。当≥3时,由堰高引起的水流垂向收缩已达到相当充分程度,故计算时将不考虑堰高变化的影响,按=3代入公式计算值。 由公式可以看出,宽顶堰的流量系数的变化范围在0.32~0.385之间,当=0时,=0.385,此时宽顶堰的流量系数值最大。 比较一下实用堰和宽顶堰的流量系数,我们可以看到前者比后者大,也就是说实用堰有较大的过水能力。对此,可以这样来理解:实用堰顶水流是流线向上弯曲的急变流,其断面上的动水压强小于按静水压

第九章 堰流与闸孔出流

第九章 堰流与闸孔出流 9.1堰流的类型有哪些?它们有哪些特点? 答:堰流分作薄壁堰流、实用堰流、宽顶堰流三种类型。 薄壁堰流的特点:当水流趋向堰壁时,堰顶下泄的水流形如舌状,不受堰顶厚度的影响,水舌下缘与堰顶只有线接触,水面呈单一的降落曲线。 实用堰流的特点:由于堰顶加厚,水舌下缘与堰顶呈面接触,水舌受到堰顶的约束和顶托,越过堰顶的水流主要还是在重力作用下自由跌落。 宽顶堰流的特点:堰顶厚度对水流的顶托作用已经非常明显。进入堰顶的水流,受到堰顶垂直方向的约束,过流断面逐渐减小,流速增大,在进口处形成水面跌落。此后,由于堰顶对水流的顶托作用,有一段水面与堰顶几乎平行。 9.2堰流计算的基本公式及适用条件?影响流量系数的主要因素有哪些? 答:堰流计算的基本公式为23 s H g 2mb Q εσ=,适用于矩形薄壁堰流、实用堰流和宽顶堰流。影响流量系数m 的主要因素有局部水头损失、堰顶水流垂向收缩的程度、堰顶断面的平均测压管水头与堰上总水头之间的比例关系。 9.3 用矩形薄壁堰测量过堰流量,如何保证较高的测量精度? 答:(1)上游渠宽与堰宽相同,下游水位低于堰顶; (2)堰顶水头不宜过小,一般应使H>2.5m ,否则溢流水舌受表面张力作用,使得出流不稳定; (3)水舌下面的空气应与大气相通,否则溢流水舌把空气带走,压强降低,水舌下面形成局部真空,会导致出流不稳。 9.4 基本的衔接与消能措施有哪几种?各自的特点是什么? 答:基本的衔接与消能措施有底流消能,挑流消能,面流消能。 底流消能:底流消能就是在建筑物下游采取一定的工程措施,控制水跃的发生位置,通过水跃产生的表面旋滚的强烈紊动以达到消能的目的。 挑流消能:在泄水建筑物末端设置挑流坎,因势利导将水股挑射入空气中,使水流扩散并与空气摩擦,消耗部分动能,然后当水股落入水中时,又在下游水垫中冲击、扩散,进一步消耗能量。 面流消能:当下游水深较大而且比较稳定时,可将下泄的高速水流导向下游水流的表层,主

Java_IO流

IO流 1,流的分类 按照流的流向划分: 输入流:只能从中读取数据,而不能向其写数据。输入流基类,InputStream和Reader。 输出流:只能向其写入数据,而不能从中读取数据。输出流基类,OutputStream和Writer。 按照操作数据单元划分: 字节流:操作最小数据单元是8位的字节。字节流基类,InputStream和OutputStream。 字符流:操作最小数据单元是16位字节。字符流基类,Reader和Writer。 2,Java IO体系 2.1 IO体系图

2.2 IO体系分类图 3,IO流抽象基类 3.1,输入流的抽象基类:InputStream和Reader InputStream和Reader是所有输入流的基类,它们都是抽象类,本身不能创建实例来执行输入,但它们是所有输入流的模板,所有输入流都使用它们提供的方法。 在InputStream里包含如下三个方法: 》》int read():从输入流中读取单个字节,返回所读取的字节数据(字节数据可直接转换为int类型)。 》》int read(byte[] b):从输入流中读取最多b.length个字节的数据,并将其存储在字节数组b 中,赶回实际读取的字节数。 》》int read(byte[] b,int off,int len):从输入流中读取最多len字节的数据,并将其从off位置开始存储在数组b中,返回实际读取的字节数。 在Reader里包含如下三个方法: 》》int read():从输入流中读取单个字符,返回所读取的字符数据(字符数据可直接转换为int类型)。 》》int read(char[] cbuf):从输入流中读取最多cbuf.length个字符的数据,并将其存储在字符数组cbuf中,赶回实际读取的字符数。 》》int read(char[] cbuf,int off,int len):从输入流中读取最多len字符的数据,并将其从off位置开始存储在数组cbuf中,返回实际读取的字符数。 3.2,输出流的抽象基类:OutputStream和Writer OutputStream和Writer和前面的输入流相似,两个流都提供了如下三个方法: 》》void write(int c):将指定的字节/字符输出到输出流中,其中c代表字节或者字符。 》》void write(byte[]/char[] buf):将字节数组/字符数组中的数据输出到指定的输出流中。》》void write(byte[]/char[] buf,int off,int len):将字节数组/字符数组中从off位置开始,长度为len的字节/字符输出到指定的输出流中。 因为字符流直接以字符作为操作单位,所以Writer可以用字符串来代替字符数组,即以String对象作为参数。Writer里还包含如下两个方法: 》》void write(String str):将字符串str里包含的字符输出到指定的输出流中。 》》void write(String str,int off,int len):将字符串str从off位置开始,长度为len的字符输出到指定输出流中。 4,IO流程序异常处理的标准方式 import java.io.*;

切换流程

切换流程 1 切换参考索引(Reference) (3) 2 本文的范围(SCOPE) (3) 3 发起切换的条件(Requirements) (4) 4 Intra-MSC Handover (5) 4.1 正常成功的切换 (5) 4.2 切换失败时的处理 (6) 5 Inter-MSC Handover (7) 5.1 有电路连接的MSC间切换 (7) 5.2 无电路连接的Inter-msc Handover (8) 5.3 后续切换(MSC-A-MSC-B-MSC-A) (9) 5.4 后续切换(MSC-A-MSC-B-MSC-B’ ) (10) 6 Message Type And Element Identify (11) 6.1 Handover-required(切换需求) (11) 6.2 Handover-Request(切换请求)。 (13) 6.3 HANDOVER-REQUEST-ACK (14) 6.4 Handover-command (14) 6.5 HANDOVER FAILURE (14) 7 Service and primitives with MAP (15) 7.1 MAP-PREPARE-HANDOVER (15) 7.2 MAP-ALLOCATION-HANDOVER-NUMBER (15) 7.3 MAP-SEND-HANDOVER-REPORT (16) 7.4 MAP-SEND-END-SIGNALING (16) 7.5 MAP-PROCESS-ACCESS-SIGNALING (16) 7.6 MAP-PREPRARE-SUBSEQUNT-HANDOVER (16) 7.7 MAP-PROCESS-FORWARD-ACCESS-SIGNALING (16) 8 附录,切换信令跟踪 (17)

Java中的IO流知识总结

Java中的IO流知识总结(转)收藏 总结一: Java IO的一般使用原则: 一、按数据来源(去向)分类: 1、是文件:FileInputStream, FileOutputStream, FileReader, FileWriter 2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream 3、是Char[]: CharArrayReader, CharArrayWriter 4、是String: StringBufferInputStream, StringReader, StringWriter 5、网络数据流:InputStream, OutputStream, Reader, Writer 二、按是否格式化输出分: 1、要格式化输出:PrintStream, PrintWriter 三、按是否要缓冲分: 1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter 四、按数据格式分: 1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类 2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类 五、按输入输出分: 1、输入:Reader, InputStream类型的子类 2、输出:Writer, OutputStream类型的子类 六、特殊需要: 1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter 2、对象输入输出:ObjectInputStream, ObjectOutputStream

切换流程

切换流程 切换过程是移动通讯区别于固定通讯的一个显著特征之一,当UE使用 的小区或制式(FDD ,TDD) 发生变化时,我们就说UE发生了切换。 WCDMA 支持的切换包括软切换,硬切换,前向切换和系统间切换。软切换和硬 切换主要是由网络侧发起,前向切换主要是UE发起,而系统间切换既有 网络侧发起的情况,又有UE发起的情况。发生切换的原因包括UE的移 动、资源的优化配置、人为干预等。 1. 软切换 在WCDMA中,由于相邻小区存在同频的情况,UE 可以通过多条无线链路 与网络进行通讯,在多条无线链路进行合并的时候,通过比较,选取信 号较好的一条,从而达到优化通讯质量的目的,只有FDD制式才能进行 软切换。根据小区之间位置的不同,软切换可以分为以下几种情况。 (1) NODEB内不同小区之间 图6-1-1NODEB内部的软切换 这种情况,无线链路可以在NODEB内,也可以到SRNC再进行合并,如 果在NODEB内部就完成了合并,我们称之为更软切换。 (2) 不同NODEB之间

图6-1-2不同NODEB之间的软切换 (3) 不同RNC之间 图6-1-3不同RNC之间的软切换 软切换中一个重要问题就是多条无线链路的合并,WCDMA中使用宏分集(MACRO DIVERSITY) 技术对无线链路进行合并,就是根据一定的标准(如误码率)对来自不同无线链路的数据进行比较,选取质量较好的数据发给上层。 在软切换中,关于邻近小区有几个重要的概念: 1 )活动集,指的是UE当前正在使用的小区的集合,软切换的执行结果就表现在活动集中小区增加或减少。 2 )观察集, UE根据UTRAN给的邻近小区信息,正在观察但不在活动集中的小区,UE对观察集中的小区进行测量,当测量结果符合一定的条件时,这些小区可能被加入活动集,所以有时也称为候选集;

IO流面试题(JAVA)

IO流(Java)面试题 一:IO流整体说明? 用的是装饰模式,装饰模式有四个角色,分别是通用接口、本原、抽象装饰、具体装饰,因为是将本原聚合到了装饰中,所以可以将本原或装饰通过构造子注入到另一个装饰,多个装饰可以随意的组合,形成一个综合的功能对象。 io流分为输入流及输出流,输入流是文件到内存,输出流是内存到文件。 流分为低层流及高层流,在实例化高层流时必须通过构造子将低层流注入到高层流中。 输入流通用的方法是read(),read(char[]),read(byte[]),readline。 输出流的通用方法是write(int),write(byte[]),write[char[]],print("string")。 当读取一个文件时,对于以字节/字节数组,字符/字符数组读取的结束条件是!=-1,对于以字符串读取的结束条件是!=null。 对于有缓存的输出时,要想写入到文件必须flush或close。 二:输入字节流的体系结构? 输入字节流的体系结构: InputStream FileInputStream FilterInputStream ObjectInputStream DataInputStream BufferedInputStream 实现代码: --读一个字节 int temp=fis.read(); while(temp!=-1) { System.out.print(temp); temp=fis.read(); } --读一批字节 byte[] bytes=new byte[1000]; int result=fis.read(bytes); while(result!=-1) { String temp=new String(bytes,0,result); result=fis.read(bytes); } 三:输出的字节流体系结构? 输出的字节流的体系结构: OutputStream FileOutputStream FilterOutputStreame ObjectOutputStream BufferedOutputStream DataOutputStream PrintStream 实现代码:

切换流程专题分析

3.2、切换流程分析: 3.2.1、Intra-Node B切换: 3.2.1.1、接力切换正常流程: 信令流程说明: 1)RNC判决进行切换后向NB发送无线链路增加请求,为目标小区建立无线 链路。目标小区收到无线链路增加请求后,配置相应链路资源,配置完 成后组织无线链路,向RNC发送RL增加响应消息。 2)RNC收到目标小区的响应消息后,为目标小区建立Iub传输承载AAL2。 3)RNC通过源小区的信道向UE发送PHYSICAL CHANNEL RECONFIGURATION 消息,通知UE进行切换。 4)UE收到PHYSICAL CHANNEL RECONFIGURATION消息后,根据接收到的切 换指令做相应配置及处理后,通过目标小区向RNC发送PHYSICAL CHANNEL RECONFIGURATION COMPLETE消息。 5)RNC收到该消息后删除源小区的无线链路和Iub传输承载,切换完成。 3.2.1.2、异常流程1-NODE B失败 异常流程说明: 1)当Node B不能按照要求为该用户增加RL时,向RNC返回RL Addition Failure消息,并包含失败原因; 2)切换失败,UE继续在源小区进行通信或掉话; 实体处理方法: 1)检查目标小区告警及资源状态,可以从LMT-B查询; 2)检查对比RNC下发的RL Addition Request中携带的参数是否正确。

3.2.1.3、异常流程2-UE响应切换失败 RNC向UE发送Physical Channel Reconfiguration消息进行切换。由于一些错误原因导致UE向RNC发送物理信道重配置失败的响应。 导致UE发送失败响应的原因可能为: 1)UE收到的消息协议错; 2)Physical Channel Reconfiguration消息中包含无效的配置信息; 3)Physical Channel Reconfiguration消息中包含UE不支持的配置信息; 4)配置信息不匹配; 5)UE物理信道配置失败; 6)重配过程中无线链路失败等。 异常流程说明: 1)当Iub接口无线链路以及AAL2连接建立完成以后,RNC向UE发送Physical Channel Reconfiguration进行切换。当上述某项原因出现时,UE向RNC返回Physical Channel Reconfiguration Failure消息。 2)RNC与Node B释放Iub接口的RL。 3)RNC与Node B释放Iub接口的AAL2连接。 4)切换过程失败,UE继续在源小区进行通信或产生掉话; 当UE回复切换失败原因中携带的原因值为无效配置和物理信道失败时: 1)对于该两类原因首先要确认RNC下发切换消息中携带的参数是否正确 2)确认UE的处理能力(可以从呼叫过程RRC建立完成消息中查到 3)检查目标邻小区参数配置是否正确 当UE回复切换失败原因中携带的原因值为TIMEOUT时,其解决方案:

练习 Java类IO流练习题

Java I/O流练习题 []选择题 1.请问如下哪些类是FileOutStream类的正确构造方法形式? A:FileOutStream(FileDescriptor fd) B:FileOutStream(String path,boolean b) C:FileOutStream(boolean b) D:FileOutStream() E:FileOutStream(File file) 答: 2.请问下列类哪些是定义在java.io包中的抽象类? A:InputStream B:OutputStream C:PrintStream D:Reader E:FileInputStream F:FileWriter 答: 3.请问下列哪种描述是正确的? A:InputStream和OutputStream是基于字节流的。 B:Reader和Writer是基于字符流的。 C:ObjectInputStream和ObjectOutputStream是不支持序列化对象的。D:Reader和Writer是支持对象序列化的。 E:以上说法都不对。 答: 4.如下哪种描述是正确的? A:Writer类可以使用不同的字符集编码向输出流写入字符。 B:Writer类可以向输出流写入unicode字符。 C:Writer类提供向输出流写入任何Java基本数据类型的方法。 D:Writer类提供向输出流写入对象类型数据的方法。 E:以上说法都不对。 答: 5.给出写文件的代码如下:(不考虑异常) FileOutputStream fout=new FileOutputStream(“datafile”); DataOutputStream dout=new DataOutputStream(fout); for(int i=0;i<500;i++) { dout.writeInt(i); } dout.close();

薄壁堰流的水力计算

薄壁堰流的水力计算 [日期:06/21/2006 来源:作者:[字体:大中小] 20:09:00] 根据堰口形状的不同,薄壁堰可分为矩形薄壁堰、三角形薄壁堰等。由于薄壁堰流具有稳定的水头与流量关系,一般多用于实验室及小河渠的流量测量;另外,曲线型实用堰的剖面型式和隧洞进口曲线常根据薄壁堰流水股的下缘曲线确定,因此研究薄壁堰流具有实际意义。 (一)矩形薄壁堰流 利用矩形薄壁堰测流时,为了得到较高的量测精度,一般要求: (1)无侧收缩(堰宽与上游引水渠宽度相同,即=); (2)下游水位低,不影响出流量; (3)堰上水头>2.5cm。因为当过小时,出流将不稳定; (4)水舌下面的空间应与大气相通。否则由于溢流水舌把空气带走,压强降低,水舌下面形成局部真空,出流将不稳定。故在无侧收缩、自由出流时,矩形薄壁堰流的流量公式为 为应用方便,可以把行进流速的影响包括在流量系数中去。为此,把上式改写为 (8-17) 式中一考虑行近流速水头影响的流量系数。 无侧收缩的矩形薄壁堰的流量系数可由雷保克公式计算 (8-18) 适用条件≥0.025m ,≤2 ,式中为堰顶水头,为上游堰高。 有侧收缩的矩形薄壁堰的流量系数可用板谷一手岛公式确定 式中为堰顶水头;为上游堰高, 为堰宽,为引水渠宽。 适用条件为:=0.5m~6.3m,=0.15m~5m, =0.03m~0.45m , ≥0.06。

当下游水位超过堰顶一定高度时,堰的过水能力开始减小,这种溢流状态称为淹没堰流。在淹没出流 时,水面有较大的波动,水头不易测准,故作为测流工具的薄壁堰不宜在淹没条件下工作。为了 保证薄壁堰不淹没,一般要求>0.7。其中指上下游水位差,指下游堰高。 (二)三角形薄壁堰流 当测量较小流量时,为了提高量测精度,常采用三角形薄壁堰。三角形薄壁堰在小水头时堰口水面宽度较小,流量的微小变化将引起水头的显著变化,因此在量测小流量时比矩形堰的精度较高。 根据试验,直角三角形薄壁堰的流量计算公式为 (8-20) 适用条件:=0.05m~0.25m; 堰高≥2H,渠宽B0≥(3~4) 。 例8-6某矩形渠道设有一矩形无侧收缩薄壁堰,已知堰宽=1m,上、下游堰高==0.8m,堰上水头=0.5m,为自由出流,求通过薄壁堰的流量。 解: 按公式(8-18)计算流量系数 =0.4034+0.0534 =0.4034+0.0534=0.4398 ==0.43981=0.689m3/s 径流总量时段Δt通过河流某一断面的总水量。它的单位是立方米(m3)或亿立方米。以所计算时段的时间乘以该时段内的平均流量,就得径流总量W,即W=QΔt。式中,Δt 为时段长(如日、月、年、多年等);Q为T时段内的平均流量(立方米/秒)。以时间为横坐标,以流量为纵坐标点绘出来的流量随时间的变化过程就是流量过程线。流量过程线和横坐标所包围的面积即为径流量。

javaio流学习总结

javaio流学习总结 javaio流学习总结 总结一:javaio流学习总结 一、IO流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数据单位不同分为:字节流和字符流 3.按流的功能不同分为:节点流和处理流 二、IO流的四大抽象类: 字符流:Reader Writer 字节流:InputStream(读数据) OutputStream(写数据) 三、InputStream的基本方法 int read() thros IOExeption 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾 void lose() thros IOExeption 关闭流释放内存资源 long skip(long n) thros IOExeption 跳过n个字节不读 四、OutputStream的基本方法 void rite(int b) thros IOExeption 向输出流写入一个字节数据 void flush() thros IOExeption 将输出流中缓冲的数据全部写出到目的地 五、Writer的基本方法

void rite(int ) thros IOExeption 向输出流写入一个字符数据 void rite(String str) thros IOExeption将一个字符串中的字符写入到输出流 void rite(String str,int offset,int length) 将一个字符串从offset开始的length个字符写入到输出流 void flush() thros IOExeption 将输出流中缓冲的数据全部写出到目的地 六、Reader的基本方法 int read() thros IOExeption 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾 七、节点流类型 八、访问文件之FileInputStream和FileOutputStream继承基类用于向文件中输入输出字节 九、访问文件之FileReader和FileWriter继承基类用于向文件中输入输出字符 ----输出流在构造函数第二个参数可以设置true意义为跟在已有文件后进行输入 ----此类流会抛出FileNotFoundExeption需要对其进行显示捕捉 十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。 此处理流的构造方法都得传相对应的基类类型 BufferedReader:提供了readLine方法用于高校读取一行字符串

java IO流编程

I/O流编程 ●流的概念 ?数据从一个对象到另一个对象过程的 抽象称为(数据)流(Stream)。 ?I/O流指输入流(InputStream)与输出 流(OutputStream) ?读入流(Reader)/写入流(Writer) ●File类 ?此类只操作文件对象,而不操作文件内 容。 ?Java中把目录当作文件来处理。 示例1: File类简单应用

?File类的构造: ◆File(String path,String name) 如: ◆File(String pathname) 如: ◆File(File path,String name) 如: ◆File(URI vpathname) 如: ?File类常用方法: ◆mkdirs()/mkdir() ◆createNewFile()/createTempFil e() ◆isFile()/isDirectory()/isAbso lute/canRead()/canWrite() ◆getName()/getPath()/getParent ()/getAbsolutePath() ◆setReadable()/setWritable()/s etReadOnly()

示例2:File常用方法 示例3:列某一目录中的所有的.exe文件

●流的分类 ?字节流 ◆以字节为单位对文件内容进行读写 操作。 ◆InputStream/OutputStream ●输入字节流与输出字节流的根类 ●JavaIO中的所有输入流与输出流 类都是它们子类。 ◆FileInputStream/FileOutputStr eam ●文件的输入流与输出流,只读写文 件的内容。 ◆常用的方法 ●read() ●write()

相关文档
最新文档