




已阅读5页,还剩134页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计 第7章字符串和文本I O 楚雄师范学院计算机科学系java程序设计课程 2 138 学习目标 1 掌握String类处理固定字符串的方法 重 2 掌握Character类处理单个字符的方法 3 掌握StringBuilder StringBuffer类处理可变字符串的方法 重 难 4 了理String StringBuilder和StringBuffer的区别 5 理解Java处理文本文件的方法 掌握使用File类获得文件的属性 删除和重命名文件的方法 重 楚雄师范学院计算机科学系java程序设计课程 3 138 学习目标 6 掌握PrintWriter类向文件写数据的方法 重 7 掌握使用Scanner类从文件读数据的方法 重 楚雄师范学院计算机科学系java程序设计课程 4 138 内容摘要 7 1引言7 2字符串类String7 3字符类Character7 4StringBuilder StringBuffer类7 5命令行参数 楚雄师范学院计算机科学系java程序设计课程 5 138 内容摘要 7 6文件类File7 7文本I O 楚雄师范学院计算机科学系java程序设计课程 6 138 内容摘要 7 1引言7 2字符串类String7 3字符类Character7 4StringBuilder StringBuffer类7 5命令行参数 楚雄师范学院计算机科学系java程序设计课程 7 138 7 1引言 所谓字符串就是一个字符序列 在许多高级语言中 字符串被处理为字符的数组 在Java中 字符串是对象 Java提供了String类 StringBuilder和StringBuffer类来存储和处理字符串 在大多数情况下 使用String类创建 存储和处理字符串是非常有效的 但是 用String创建的字符串不能被修改 楚雄师范学院计算机科学系java程序设计课程 8 138 7 1引言 StringBuilder和StringBuffer类创建的字符串是可变的 本章还要介绍如何处理main方法的命令行参数 以及如何使用Scanner类和PrintWriter类进行简单的文本输入输出 楚雄师范学院计算机科学系java程序设计课程 9 138 内容摘要 7 1引言7 2字符串类String7 3字符类Character7 4StringBuilder StringBuffer类7 5命令行参数 楚雄师范学院计算机科学系java程序设计课程 10 138 7 2字符串类 String类有11个构造方法和40多个方法 这些方法用于检验字符序列 即字符串 中的单个字符 比较字符串 查找子串 提取子串 将全部字符串转换成大写或小写的新字符串 楚雄师范学院计算机科学系java程序设计课程 11 138 7 2 1构造一个字符串 构造一个字符串的语法格式为 String newString 例如 Stringmessage newString welcometoJava 对字符串 可以使用下列语句 Stringmessage welcometoJava 楚雄师范学院计算机科学系java程序设计课程 12 138 7 2 1构造一个字符串 也可以使用字符数组构造字符串 Char chrArray G o o d Stringmessage newString chrArray 注意 String变量存储String对象的引用 而String对象存储串值 楚雄师范学院计算机科学系java程序设计课程 13 138 7 2 2不可变字符串与限定字符串 String对象是不可变的 它的内容不能改变 例如 Strings Java s HTML 首先 第一句创建了一个内容为 Java 的String对象 并将其引用赋值给s 然后 第二句创建了内容为 HTML 的String对象 并将其引用赋值给s 此后 Java 对象仍然存在 如图7 1所示 楚雄师范学院计算机科学系java程序设计课程 14 138 7 2 2不可变字符串与限定字符串 楚雄师范学院计算机科学系java程序设计课程 15 138 7 2 2不可变字符串与限定字符串 字符串是不可变的又被频繁地使用 为了提高Java虚拟机的效率和节约内存 当字符串直接量具有相同的字符序列时 使用唯一的实例来处理 这样的实例称被限定的 可以通过String对象的intern方法返回一个限定字符串 例如 楚雄师范学院计算机科学系java程序设计课程 16 138 7 2 2不可变字符串与限定字符串 Strings Java Strings1 newString Java Strings2 s1 intern Strings3 Java 楚雄师范学院计算机科学系java程序设计课程 17 138 7 2 3字符串的比较 由于字符串被处理为对象 所以 要比较两个字符是否相等就不能使用运算符 来进行 事实上 运算符 用于判断是否是引用同一个对象 例如 楚雄师范学院计算机科学系java程序设计课程 18 138 7 2 2不可变字符串与限定字符串 Strings Java Strings1 newString Java Strings2 s1 intern Strings3 Java System out println s1 s是 s1 s System out println s3 s是 s3 s 显示 楚雄师范学院计算机科学系java程序设计课程 19 138 7 2 2不可变字符串与限定字符串 s1 s是falses3 s是true 楚雄师范学院计算机科学系java程序设计课程 20 138 7 2 3字符串的比较 要判断两个字符串变量是否具有相同的内容 可以使用equals 方法来完成 例如 Strings Java Strings1 newString Java Strings2 s1 intern Strings3 Java System out println s1 equals s 是 s1 equals s System out println s3 equals s 是 s3 equals s 显示 楚雄师范学院计算机科学系java程序设计课程 21 138 7 2 2不可变字符串与限定字符串 s1 s是trues3 s是true 楚雄师范学院计算机科学系java程序设计课程 22 138 7 2 3字符串的比较 比较两个字符是否相等 还可以使用compareTo方法来进行 SpareTo s2 当s1等于s2时 它返回0 当s1小于 字典序 s2时 它返回判断过程中小于字符距离值的负数 当s1大于 字典序 s2时 它返回判断过程中大于字符距离值的正数 楚雄师范学院计算机科学系java程序设计课程 23 138 7 2 3字符串的比较 例如 设s1为 abc s2为 abc 则SpareTo s2 返回值为0 设s1为 abc s2为 abg 则SpareTo s2 返回值为 4 设s1为 abg s2为 abc 则SpareTo s2 返回值为4 楚雄师范学院计算机科学系java程序设计课程 24 138 7 2 3字符串的比较 String类还提供了一些方法来比较字符串 equalsIgnoreCase 比较两个字符串是否相等 忽略字母的大小写 regionMatches 比较两个字符串的某一部分是否相等 str startsWith prefix 检测str是否以指定前缀prefix开始 str endsWith suffix 检测str是否以指定后缀suffix结束 楚雄师范学院计算机科学系java程序设计课程 25 138 7 2 4字符串长度以及提取单个字符 字符串长度可以通过调用length 方法来获得 例如 设字符串s的内容为 WelcometoJava 则s length 返回15 从字符串中指定位置提取一个字符可以通过调用charAt 方法来进行 其中字符串的位置从0开始计算 最后一个字符的位置为length 1 楚雄师范学院计算机科学系java程序设计课程 26 138 7 2 4字符串长度以及提取单个字符 例如 设字符串s的内容为 WelcometoJava 则s charAt 0 返回字符W s charAt 8 返回字符t s charAt s length 出错 楚雄师范学院计算机科学系java程序设计课程 27 138 7 2 5字符串的连接 可以使用concat 方法连接两个字符串 例如 设字符串s1的内容为 Welcometo s2的内容为 Java 则Strings3 s1 concat s2 产生s3为 WelcometoJava 也可以使用加号 来连接两个字符串 Strings3 s1 s2 楚雄师范学院计算机科学系java程序设计课程 28 138 7 2 6提取子串 可以使用substring 方法来提取子串 其格式为 substring beginIndex endIndex 功能 当有endIndex值时 从字符串中返回其位置从beginIndex开始到endIndex止的子串 当没有endIndex值时 从字符串中返回其位置从beginIndex开始到结束止的子串 例如 楚雄师范学院计算机科学系java程序设计课程 29 138 7 2 6提取子串 例如 设字符串s的内容为 WelcometoJava 则s substring 8 11 返回子字符串 对象 toJ s substring 11 返回子字符串 对象 Java 楚雄师范学院计算机科学系java程序设计课程 30 138 7 2 7字符串的转换 字符串对象一旦建立 它的内容就不能改变 但是 可以使用toLowerCase toUpperCase trim和replace方法得到一个新的字符串 其中toLowerCase和toUpperCase方法将字符串中的所有字符都转换成大写或小写 由此获得新的字符串 trim方法通过去除两端空格来获得新字符串 replace oldChar newChar 把原字符串中oldChar用newChar替代而获得新的字符串 楚雄师范学院计算机科学系java程序设计课程 31 138 7 2 7字符串的转换 例如 Welcome toLowerCase 返回一个新字符串 welcome Welcome toUpperCase 返回一个新字符串 WELCOME Welcome trim 返回一个新的字符串 Welcome Welcome replace e A 返回一个新的字符串 WAlcomA 楚雄师范学院计算机科学系java程序设计课程 32 138 7 2 8获取字符串中的一个字符或子串 利用indexOf和lastIndexOf方法可以在字符串中得到一个字符或子串 String中定义了4个重载的indexOf方法和4lastIndexOf方法 publicintindexOf intch publicintlastIndexOf intch 返回字符串中与指定字符ch相匹配的第一个 最后一个 字符的下标 如果指定字符不在串中 则返回 1 将一个字符 如indexOf a 楚雄师范学院计算机科学系java程序设计课程 33 138 7 2 8获取字符串中的一个字符或子串 参数ch得到的是字符的统一码值 即 a 的统一码值是十进制数97 例如 WelcometoJava indexOf W 返回0 WelcometoJava indexOf o 返回4 WelcometoJava lastIndexOf W 返回0 WelcometoJava lastIndexOf o 返回9 楚雄师范学院计算机科学系java程序设计课程 34 138 7 2 8获取字符串中的一个字符或子串 publicintindexOf intch intfromindex publicintlastIndexOf intch intendIndex 返回在fromIndex之后 endIndex之前 与给定字符ch相匹配的第一个 最后一个字符的下标 如果这个给定的字符不在以fromIndex开始 endIndex结束 的子串中 则返回 1 WelcometoJava indexOf o 5 返回9 WelcometoJava lastIndexOf o 5 返回4 楚雄师范学院计算机科学系java程序设计课程 35 138 7 2 8获取字符串中的一个字符或子串 publicintindexOf Stringstr publicintlastIndexOf Stringstr 返回与指定字符串str相匹配的子串的首 尾 字符的下标 例如 WelcometoJava indexOf come 返回3 WelcometoJava lastIndexOf come 返回6 楚雄师范学院计算机科学系java程序设计课程 36 138 7 2 8获取字符串中的一个字符或子串 publicintindexOf Stringstr intfromIndex publicintlastIndexOf Stringstr intendIndex 返回字符串中以fromIndex开始 endIndex结束 与指定字符串str相匹配的子串的第一个 最后一个 字符的下标 如果参数str不在以fromIndex开始 endIndex结束 的子串中 返回 1 例如 WelcometoJava indexOf Java 5 返回11 WelcometoJava indexOf java 5 返回 1 楚雄师范学院计算机科学系java程序设计课程 37 138 7 2 8获取字符串中的一个字符或子串 WelcometoJava lastIndexOf Java 5 返回 1 WelcometoJava lastIndexOf java 5 返回 1 楚雄师范学院计算机科学系java程序设计课程 38 138 7 2 9字符串与数组之间的转换 字符串不是数组 但是 字符串可以转换成数组 反之亦然 使用toCharArray方法可以将字符串转换成一个字符的数组 例如 Char chars Java toCharArray 因此 chars 0 为 J chars 1 为 a chars 2 为 v chars 3 为 a 楚雄师范学院计算机科学系java程序设计课程 39 138 7 2 9字符串与数组之间的转换 也可以使用getChars intsb intse char dst intdb 方法把下标sb到se 1的子串复制到字符数组dst中 并且它在dst中的下标是db开始的 例如 char dst J A V A 1 3 0 1 CS3720 getChars 2 6 dst 4 楚雄师范学院计算机科学系java程序设计课程 40 138 7 2 9字符串与数组之间的转换 使dst从 J A V A 1 3 0 1 变为 J A V A 3 7 2 0 楚雄师范学院计算机科学系java程序设计课程 41 138 7 2 10将字符值和数值转换成字符串 前面 我们讲过 Double parseDouble Integer parseInteger 可以分别把转换成double值和int值 本节valueOf方法可以把数值转换成字符串 例如 楚雄师范学院计算机科学系java程序设计课程 42 138 7 2 10将字符值和数值转换成字符串 String valueOf 5 44 把数值5 44转换成字符串 5 44 String valueOf 5 把数值5转换成字符串 5 楚雄师范学院计算机科学系java程序设计课程 43 138 内容摘要 7 1引言7 2字符串类String7 3字符类Character7 4StringBuilder StringBuffer类7 5命令行参数 楚雄师范学院计算机科学系java程序设计课程 44 138 7 3字符类Character Java为每一种基本数据类型提供一个包装类 这些类是 Charater Boolean Byte Short Integer Long Float和Double等它们分别对应基本类型char boolean byte short int long float和double等 所有这些类都在java lang包中 楚雄师范学院计算机科学系java程序设计课程 45 138 7 3字符类Character Charater类有一人个构造方法和多个进行字符操作的方法 如确定字符的类别 大写字母 小写字母 数字等 将大写字母转换成小写字母或将小字母转换成大写字母 1 可以用char值创建一个Character对象 例如 下述语句用字符 a 创建一个字符对象Characterch newCharacter a 楚雄师范学院计算机科学系java程序设计课程 46 138 7 3字符类Character 2 charValue方法返回包含在Character对象中的字符值 例如 下述语句用字符 a 创建一个字符对象 然后从该对象返回其内容即字符 a Characterch newCharacter a ch charValue 返回 a 楚雄师范学院计算机科学系java程序设计课程 47 138 7 3字符类Character pareTo方法将该字符与另一字符进行比较 返回一个数值 它是这个字符与另一个字符的统一码值之差 例如 ch为newCharacter b 则 pareTo newCharacter a 返回pareTo newCharacter b 返回0 楚雄师范学院计算机科学系java程序设计课程 48 138 7 3字符类Character pareTo newCharacter c 返回 pareTo newCharacter d 返回 2 楚雄师范学院计算机科学系java程序设计课程 49 138 7 3字符类Character 4 equals方法返回true 当且仅当两个字符相同时 例如 ch为newCharacter b 则 ch equals newCharacter a 返回falsech equals newCharacter b 返回true 楚雄师范学院计算机科学系java程序设计课程 50 138 内容摘要 7 1引言7 2字符串类String7 3字符类Character7 4StringBuilder StringBuffer类7 5命令行参数 楚雄师范学院计算机科学系java程序设计课程 51 138 7 4StringBuilder StringBuffer类 前面我们介绍了String类的使用 提到过它有一个不足之处 String对象一旦创建后 它的值就不能再修改 为了使字符串处理能适应于可以修改其值 Java提供了StringBuilder StringBuffer类 它是Java对字符串的另一种处理办法 它比String类更加灵活 可以在字符串缓冲区中添加 插入或追加新的内容 楚雄师范学院计算机科学系java程序设计课程 52 138 7 4StringBuilder StringBuffer类 在JDK1 5中 StringBuilder类与StringBuffer类相似 除了StringBuffer中的update方法是同步的 如果当前是多任务访问 使用StringBuffer 而如果是单任务访问 StringBuilder会更有效 StringBuilder类与StringBuffer类的构造方法和方法基本相同 本节介绍StringBuffer 可以用StringBuilder代替StringBuffer 程序不经任何修改仍可编译执行 楚雄师范学院计算机科学系java程序设计课程 53 138 7 4StringBuilder StringBuffer类 StringBuffer类有3个构造方法和30多个用于管理缓冲区或修改缓冲区内字符串的方法 可以创建空缓冲区或字符串缓冲区 楚雄师范学院计算机科学系java程序设计课程 54 138 7 4 1创建字符串缓冲区 字符串缓冲区是StringBuffer对象的内容 用于存储字符串 创建StringBuffer对象的方法格式 publicStringBuff 创建一个StringBuff对象 其内容是容量为16的空字符串缓冲区 楚雄师范学院计算机科学系java程序设计课程 55 138 7 4 1创建字符串缓冲区 publicvoidStringBuff intcapacity 创建一个StringBuff对象 其内容是容量为capacity的空字符串缓冲区publicvoidStringBuff Stringstr 创建一个StringBuff对象 其内容是str的字符串缓冲区 缓冲区容量一般为字符串str长度加16例如 StringBufferstrBuf1 newStringBuffer 楚雄师范学院计算机科学系java程序设计课程 56 138 7 4 1创建字符串缓冲区 StringBufferstrBuf2 newStringBuffer 25 StringBufferstrBuf3 newStringBuffer Java 楚雄师范学院计算机科学系java程序设计课程 57 138 7 4 2访问字符串缓冲区 访问字符串缓冲区就是访问它的子串或字符 访问字符串缓冲区的方法格式 publiccharcharAt intindex 返回指定下标的字符 例如 StringBufferstrBuf newStringBuffer Java System out println 下标为2的元素 charAt 2 楚雄师范学院计算机科学系java程序设计课程 58 138 7 4 2访问字符串缓冲区 publicStringsubstring intstartIndex 返回从startIndex开始的子串 例如 StringBufferstrBuf newStringBuffer Java System out println 从下标为2开始的子串为 substring 2 publicStringsubstring intstartIndex intendIndex 楚雄师范学院计算机科学系java程序设计课程 59 138 7 4 2访问字符串缓冲区 返回从下标startIndex开始到下标endIndex止的子串 不包括下标endIndex处的字符 例如 StringBufferstrBuf newStringBuffer Java System out println 从下标为2开始的子串为 substring 1 2 楚雄师范学院计算机科学系java程序设计课程 60 138 7 4 2访问字符串缓冲区 publicintcapacity 返回该字符串缓冲区的容量 例如 StringBufferstrBuf newStringBuffer Java System out println 当前字符串缓冲区的容量为 capacity publicintlength 楚雄师范学院计算机科学系java程序设计课程 61 138 7 4 2访问字符串缓冲区 返回该字符串缓冲区中的字符个数 例如 StringBufferstrBuf newStringBuffer Java System out println 当前字符串缓冲区中字符数为 length 楚雄师范学院计算机科学系java程序设计课程 62 138 7 4 3修改缓冲区中的字符串 包括在字符串缓冲区中追加新内容 在字符串缓冲区中的指定位置插入新内容 以及删除或替换字符串缓冲区中的字符1 追加方法格式 publicStringBuilderappend char data 在该字符串缓冲区追加一个字符数组 楚雄师范学院计算机科学系java程序设计课程 63 138 7 4 3修改缓冲区中的字符串 publicStringBuilderappend char data intoffset intlen 在该字符串缓冲区追加data的子数组 其开始下标为offset 元素个数为lenpublicStringBuilderappend v 把基本数据类型的值作为字符追加该字符串缓冲区中publicStringBuilderappend Stringstr 在该字符串缓冲区中追加字符串 楚雄师范学院计算机科学系java程序设计课程 64 138 7 4 3修改缓冲区中的字符串 下列代码将字符串和字符追加到strBuf 构成新的字符串 WelcometoJava StringBufferstrBuf newStringBuffer strBuf append Welcome strBuf append strBuf append to strBuf append strBuf append Java 楚雄师范学院计算机科学系java程序设计课程 65 138 7 4 3修改缓冲区中的字符串 2 插入Java也提供了几种重载方法 可以把boolean char char数组 double float int long和String类型的值插入到字符串缓冲区中指定下标处 原内容后移 方法格式 publicvoidinsert intoffset char data 把data插入到下标为offset处 原内容后移 楚雄师范学院计算机科学系java程序设计课程 66 138 7 4 3修改缓冲区中的字符串 publicvoidinsert intoffset b 把值b转换成字符串 插入到下标为offset处 原内容后移publicvoidinsert intoffset Stringstr 把字符串str插入到下标为offset处 原内容后移例如 楚雄师范学院计算机科学系java程序设计课程 67 138 7 4 3修改缓冲区中的字符串 publicclasstest2 publicstaticvoidmain String args char data H T M L StringBufferstrBuf newStringBuffer WelcomeToJava strBuf insert 11 data System out println 当前字符串为 strBuf substring 0 strBuf insert 15 2 System out println 当前字符串为 strBuf substring 0 楚雄师范学院计算机科学系java程序设计课程 68 138 7 4 3修改缓冲区中的字符串 strBuf insert 17 and System out println 当前字符串为 strBuf substring 0 楚雄师范学院计算机科学系java程序设计课程 69 138 7 4 3修改缓冲区中的字符串 3 删除方法格式 publicStringBuilderdelete intstartIndex intendIndex 删除从startIndex开始到endIndex止的子串 不包括下标为endIndex的字符例如 publicclasstest2 publicstaticvoidmain String args StringBufferstrBuf newStringBuffer WelcomeToJava 楚雄师范学院计算机科学系java程序设计课程 70 138 7 4 3修改缓冲区中的字符串 strBuf delete 7 9 楚雄师范学院计算机科学系java程序设计课程 71 138 7 4 3修改缓冲区中的字符串 publicStringBuilderdeleteChartAt intindex 删除从下标为index的字符例如 publicclasstest2 publicstaticvoidmain String args StringBufferstrBuf newStringBuffer WelcomeToJava 楚雄师范学院计算机科学系java程序设计课程 72 138 7 4 3修改缓冲区中的字符串 strBuf delete 9 楚雄师范学院计算机科学系java程序设计课程 73 138 7 4 3修改缓冲区中的字符串 4 替换方法格式 publicreplace intsI inteI Stringstr 用给定字符串str替换字符串缓冲中从sI开始到eI止的字符 不包括下标为eI的字符 例如 楚雄师范学院计算机科学系java程序设计课程 74 138 7 4 3修改缓冲区中的字符串 publicclasstest5 publicstaticvoidmain String args StringBufferstrBuf newStringBuffer WelcomeToJava strBuf replace 11 15 C andc System out println 当前字符串为 strBuf substring 0 楚雄师范学院计算机科学系java程序设计课程 75 138 7 4 3修改缓冲区中的字符串 楚雄师范学院计算机科学系java程序设计课程 76 138 7 4 3修改缓冲区中的字符串 5 倒置方法格式 publicStringBuilderreverse 倒置字符串缓冲区中字符的顺序 例如 楚雄师范学院计算机科学系java程序设计课程 77 138 7 4 3修改缓冲区中的字符串 publicclasstest6 publicstaticvoidmain String args StringBufferstrBuf newStringBuffer WelcomeToJava strBuf reverse System out println 当前字符串为 strBuf substring 0 楚雄师范学院计算机科学系java程序设计课程 78 138 7 4 3修改缓冲区中的字符串 楚雄师范学院计算机科学系java程序设计课程 79 138 内容摘要 7 1引言7 2字符串类String7 3字符类Character7 4StringBuilder StringBuffer类7 5命令行参数 楚雄师范学院计算机科学系java程序设计课程 80 138 7 5命令行参数 我们先看前面的例子 publicclasstest6 publicstaticvoidmain String args StringBufferstrBuf newStringBuffer WelcomeToJava strBuf reverse System out println 当前字符串为 strBuf substring 0 楚雄师范学院计算机科学系java程序设计课程 81 138 7 5命令行参数 发现 在main方法的定义中有参数声明 String args问 这参数是干什么的呢 回答 存放命令行参数 楚雄师范学院计算机科学系java程序设计课程 82 138 7 5命令行参数 我们来改一下前面的例子并运行 publicclasstest7 publicstaticvoidmain String args System out println args 0 args 0 args 1 args 1 rgs 2 args 2 楚雄师范学院计算机科学系java程序设计课程 83 138 7 5命令行参数 楚雄师范学院计算机科学系java程序设计课程 84 138 7 5命令行参数 可见 main方法中参数args是用来存放命令行中的参数的 事实上 当调用具有n个参数的程序 即main方法 时 Java解释器创建一个如下所示数组 newString n 存储命令行参数 并把该数组的引用传递给args 楚雄师范学院计算机科学系java程序设计课程 85 138 7 5命令行参数 实例 编写程序进行整数的二元运算 javaCalculator2 3程序运行结果为2 3 5 楚雄师范学院计算机科学系java程序设计课程 86 138 7 5命令行参数 Calculator java PassparametersfromthecommandlinepublicclassCalculator Main方法publicstaticvoidmain String args 运行结果intresult 0 楚雄师范学院计算机科学系java程序设计课程 87 138 7 5命令行参数 if args length 3 System out println 用法 javaCalculatoroperand1operatoroperand2 System exit 0 楚雄师范学院计算机科学系java程序设计课程 88 138 7 5命令行参数 switch args 1 charAt 0 确定操作符case result Integer parseInt args 0 Integer parseInt args 2 break case result Integer parseInt args 0 Integer parseInt args 2 break case result Integer parseInt args 0 Integer parseInt args 2 break case result Integer parseInt args 0 Integer parseInt args 2 楚雄师范学院计算机科学系java程序设计课程 89 138 7 5命令行参数 显示结果System out println args 0 args 1 args 2 result 楚雄师范学院计算机科学系java程序设计课程 90 138 问题引入 在前面的课程中 我们已经知道 存储在变量 数组和对象中的数据是暂时的 程序结束后它们就会丢失 那么 为了能够永久保存数据 应采用什么办法呢 回答是 文件 所谓文件就是数据的集合 是使用外部存储设备存储数据的一种形式 下面 我们介绍在Java中如何获取文件的各种属性 文件File 如何读写文本文件 文本I O 等 楚雄师范学院计算机科学系java程序设计课程 91 138 内容摘要 7 6文件类File7 7文本I O 楚雄师范学院计算机科学系java程序设计课程 92 138 7 6文件类File 类库中提供的文件类File是Java专门提供的一种抽象 用于以平台独立的方式处理大多数平台依赖的 复杂的文件和路径名问题 其处理方式表现为 文件所存放的 位置 以相对路径的方式来说明 如 image us gif 表示文件us gif在当前目录的image目录下 image us gif 表示文件us gif在当前目录的父目录的image目录下 注 image与当前目录同属于一个父目录 File类是文件名及其目录路径的一个包装类 它的实例对象既可以表示目录 也可以表示文件 如 楚雄师范学院计算机科学系java程序设计课程 93 138 7 6文件类File File类包含许多获取文件属性的方法以及删除和重命名文件的方法 但是 它没有包含读写文件内容的方法 一 创建文件对象File类创建文件对象的方法重载了三个 其格式分别如下 1 创建文件对象方法1publicFile String 功能 为指定创建文件对象 可以是文件 也可以是目录 例如 当前目录为 main book 楚雄师范学院计算机科学系java程序设计课程 94 138 7 6文件类File importjava io File publicclassTestPath publicstaticvoidmain String args Filepath1 newFile image Filepath2 newFile db txt dat Filepath3 newFile image if path1 exists System out println image存在 elseSystem out println image不存在 楚雄师范学院计算机科学系java程序设计课程 95 138 7 6文件类File if path2 exists System out println db txt dat存在 elseSystem out println db txt dat不存在 if path3 exists System out println image存在 elseSystem out println image不存在 楚雄师范学院计算机科学系java程序设计课程 96 138 7 6文件类File 我们在存在或不存在上述文件或目录中运行该程序后知道 1 File类并不是用来在存储设备中创建文件的 而是创建一个与存储设备中文件相关联的文件对象 通过文件对象来处理存储设备中文件 2 在创建文件对象时 不管其对应的关联文件是否存在 该创建都不受影响 3 创建的文件对象所关联的文件既可以是普通文件 也可以是目录 这一点File类是通过是否有扩展名来判断的 如图示 楚雄师范学院计算机科学系java程序设计课程 97 138 7 6文件类File 楚雄师范学院计算机科学系java程序设计课程 98 138 7 6文件类File 2 创建文件对象方法2publicFile String String 功能 在下为创建一个文件对象 可以是文件 也可以是目录 例如 importjava io File publicclassTestPath2 publicstaticvoidmain String args Filepath1 newFile image src Filepath2 newFile db bin txt dat Filepath3 newFile image db 楚雄师范学院计算机科学系java程序设计课程 99 138 7 6文件类File if path1 exists System out println image src存在 elseSystem out println image src不存在 if path2 exists System out println db bin txt dat存在 elseSystem out println db bin txt dat不存在 楚雄师范学院计算机科学系java程序设计课程 100 138 7 6文件类File if path3 exists System out println image db存在 elseSystem out println image db不存在 楚雄师范学院计算机科学系java程序设计课程 101 138 7 6文件类File 3 创建文件对象方法3publicFile File String 功能 在下为创建一个文件对象 可以是文件 也可以是目录 其中父目录是通过另一个文件对象来指明的 例如 当前目录为 main book importjava io File publicclassTestPath3 publicstaticvoidmain String args Filepath1 newFile image src Filepath2 newFile path1 bin txt dat 楚雄师范学院计算机科学系java程序设计课程 102 138 7 6文件类File if path1 exists System out println image src存在 elseSystem out println image src不存在 if path2 exists System out println image src bin txt dat存在 elseSystem out println image src bin txt dat不存在 楚雄师范学院计算机科学系java程序设计课程 103 138 7 6文件类File 楚雄师范学院计算机科学系java程序设计课程 104 138 7 6文件类File 楚雄师范学院计算机科学系java程序设计课程 105 138 7 6文件类File 二 获取文件对象属性等方法File类提供一些方法 用于判断文件对象的一些状态属性 1 判断与该文件对象关联的文件或目录是否存在publicbooleanexists 功能 判断该文件对象关联的文件或目录是否存在 若存在则返回true 否则返回false 楚雄师范学院计算机科学系java程序设计课程 106 138 7 6文件类File 2 判断与该文件对象关联的是否是目录publicbooleanisDirectory 功能 判断该文件对象关联的是否是目录 若是则返回true 否则返回false 3 判断与该文件对象关联的是否是文件publicbooleanisFile 功能 判断该文件对象关联的是否是文件 若是则返回true 否则返回false 楚雄师范学院计算机科学系java程序设计课程 107 138 7 6文件类File importjava io File publicclassTestPath4 publicstaticvoidmain String args Filepath1 newFile image src Filepath2 newFile path1 bin txt dat if path1 isDirectory System out println image src是目录 elseSystem out println image src不是目录 楚雄师范学院计算机科学系java程序设计课程 108 138 7 6文件类File if path2 isFile System out println image src bin txt dat是文件 elseSystem out println image src bin txt dat不是文件 楚雄师范学院计算机科学系java程序设计课程 109 138 7 6文件类File 4 判断与该文件对象关联的文件是否能读publicbooleancanRead 功能 如果该文件对象关联的文件存在且能读 则返回true 否则返回false 5 判断与该文件对象关联的文件是否能写publicbooleancanWrite 功能 如果该文件对象关联的文件存在且能写 则返回true 否则返回false 楚雄师范学院计算机科学系java程序设计课程 110 138 7 6文件类File 6 判断与该文件对象是否由绝对路径创建publicbooleanisAbsolute 功能 如果该文件对象是由绝对路径名创建 则返回true 否则返回false 7 判断与该文件对象关联的文件是否是隐藏的publicbooleanisHidden 功能 如果该文件对象关联的文件是隐藏的 则返回true 否则返回false 例如 楚雄师范学院计算机科学系java程序设计课程 111
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东莞职业技术学院《计算机辅助设计(3DMAX)》2023-2024学年第一学期期末试卷
- 网络购物平台商品交易规则协议
- 山东省济宁市泗水县2024年九年级化学第一学期期末统考模拟试题含解析
- 北京市二中学教育集团2024年数学七年级第一学期期末考试模拟试题含解析
- 广东省中学山市四中学2025届九上化学期末质量检测模拟试题含解析
- 中央音乐学院《英美文学里的生态》2023-2024学年第一学期期末试卷
- 2024-2025学年河南省平顶山市舞钢市九年级数学第一学期期末质量跟踪监视试题含解析
- 电信设备维修管理制度流程
- 幼儿园幼小衔接转接制度完善计划
- 真菌肺炎CT鉴别诊断
- 扶贫农产品购销合同协议(农产品购销合同模板)
- 汽车维修高级工考试试题及参考答案
- 检验科安全管理制度汇总
- 英语音标拼读方法讲解
- MT 113-1995煤矿井下用聚合物制品阻燃抗静电性通用试验方法和判定规则
- GB/T 5782-2016六角头螺栓
- GB/T 23445-2009聚合物水泥防水涂料
- GB/T 13451.2-1992着色颜料相对着色力和白色颜料相对散射力的测定光度计法
- GB/T 11264-2012热轧轻轨
- 山东省中小学校档案管理暂行办法
- 眼镜镜架知识汇总课件
评论
0/150
提交评论