![Java中如何实现文件的输入和输出?,第1张 Java中如何实现文件的输入和输出?,第1张](/aiimages/Java%E4%B8%AD%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E7%9A%84%E8%BE%93%E5%85%A5%E5%92%8C%E8%BE%93%E5%87%BA%3F.png)
程序如下:\x0d\x0a \x0d\x0a\x0d\x0aFile file1 = new File("/home/a123/a")\x0d\x0a\x0d\x0aif (file1.exists()) { \x0d\x0aSystem.out.println("存在
文件夹a") \x0d\x0a} else { \x0d\x0afile1.mkdir()//
文件夹的创建 创建文件夹/home/a123/a \x0d\x0a} \x0d\x0aFile file2 = new File("/home/a123/a/test") \x0d\x0aif (file2.exists()) { \x0d\x0aSystem.out.println("存在文件夹或者文件test") \x0d\x0a} else { \x0d\x0atry { \x0d\x0afile2.createNewFile()// 文件的创建,注意与文件夹创建的区别 \x0d\x0a} catch (IOException e) { \x0d\x0a// TODO Auto-generated catch block \x0d\x0ae.printStackTrace() \x0d\x0a} \x0d\x0a} \x0d\x0a \x0d\x0a/** \x0d\x0a * 最简单的文件读写方法是使用类FileWriter \x0d\x0a * (它的父类依次是java.io.OutputStreamWriter——>java.io.Writer——>java.lang.Object )\x0d\x0a */ \x0d\x0a \x0d\x0a// 下面是向文件file2里面写数据 \x0d\x0atry { \x0d\x0aFileWriter fileWriter = new FileWriter(file2) \x0d\x0aString s = new String("This is a test! \n" + "aaaa") \x0d\x0afileWriter.write(s) \x0d\x0afileWriter.close()// 关闭数据流 \x0d\x0a\x0d\x0a} catch (IOException e) { \x0d\x0a// TODO Auto-generated catch block \x0d\x0ae.printStackTrace() \x0d\x0a} \x0d\x0a \x0d\x0a/* \x0d\x0a * 这样写数据的话,是完全更新文件test里面的内容,即把以前的东西全部删除,重新输入。 \x0d\x0a * 如果不想删除以前的数据,而是把新增加的内容增添在文件末尾处。只需要在创建FileWriter对象时候,使用另外一个构造函数即可: \x0d\x0a * FileWriter fileWriter=new FileWriter(file2,true)\x0d\x0a */ \x0d\x0a \x0d\x0a// 下面是从文件file2读东西 \x0d\x0atry { \x0d\x0aFileReader fileReader = new FileReader(file2) \x0d\x0aString s = null \x0d\x0achar ch \x0d\x0atry { \x0d\x0achar[] c = new char[100] \x0d\x0afileReader.read(c,0,2)// 具体想得到文件里面的什么值(单个char?int?还是String?), \x0d\x0aSystem.out.println(c) \x0d\x0afileReader.close() \x0d\x0a \x0d\x0a} catch (IOException e) { \x0d\x0a// TODO Auto-generated catch block \x0d\x0ae.printStackTrace() \x0d\x0a} \x0d\x0a \x0d\x0a} catch (FileNotFoundException e) { \x0d\x0a// TODO Auto-generated catch block \x0d\x0ae.printStackTrace() \x0d\x0a} \x0d\x0a/** \x0d\x0a * 具体想得到文件里面的什么值(单个char?int?还是String?),需要知道不通read的不同用法: \x0d\x0a * 1. int read()
读取单个字符。 \x0d\x0a * 2. int read(char[] cbuf) 将字符读入数组。可以再将字符型数组转化位字符串 \x0d\x0a * 3. int read(char[] cbuf,int off,int len) 将字符读入数组的某一部分。 \x0d\x0a * 这三个方法都返回一个int值,作用是:读取的字符数,如果已到达流的末尾,则返回 -1. \x0d\x0a */ \x0d\x0a \x0d\x0a}
java读入文件,并逐行输出,先在D://home建立个文件夹,然后创建一个a.txt文件,然后编辑文件,文本编辑的编码是utf-8,然后用流逐行读取输出,如下:
import java.io.BufferedInputStream
import java.io.BufferedReader
import java.io.File
import java.io.FileInputStream
import java.io.InputStream
import java.io.InputStreamReader
public class TestC {
public static void main(String[] args){
//获取要读取的文件
File readFile=new File("D://home/a.txt")
//输入IO流声明
InputStream in=null
InputStreamReader ir=null
BufferedReader br=null
try {
//用流读取文件
in=new BufferedInputStream(new FileInputStream(readFile))
//如果你文件已utf-8编码的就按这个编码来读取,不然又中文会读取到乱码
ir=new InputStreamReader(in,"utf-8")
//字符输入流中读取文本,这样可以一行一行读取
br= new BufferedReader(ir)
String line=""
//一行一行读取
while((line=br.readLine())!=null){
System.out.println(line)
}
} catch (Exception e) {
e.printStackTrace()
}finally{
//一定要关闭流,倒序关闭
try {
if(br!=null){
br.close()
}
if(ir!=null){
ir.close()
}
if(in!=null){
in.close()
}
} catch (Exception e2) {
}
}
}
}
结果:
helloworld
您好
123456
评论列表(0条)