输入字段,之后能够存储到一个硬盘中的txt文本中。
package com.hspedu.outputstream_;
import org.testng.annotations.Test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/**
* @author abner
* @version 1.0
*/
public class FileOutputStream01 {
public static void main(String[] args) {
}
/**
* 演示使用FileOutputStream
*如果文件不存在,则创建该文件
*
* */
@Test
public void writeFile() throws FileNotFoundException {
//创建
String filePath = "d:\\a.txt";
//我发现c盘是写入不进去的
FileOutputStream fileOutputStream = null;
try {
//得到 对象
//1.new FileOutputStream(filePath) 创建方式,当写入内容时,会覆盖原来的内容
//2.new FileOutputStream(filePath,true) 创建方式,当写入内容,会添加在尾部(等于一个追加)
fileOutputStream = new FileOutputStream(filePath,true);
//写入一个字节
// fileOutputStream.write('H');
//char 自动转换为 int
String str = "zzz.world!";
//fileOutputStream.write(str.getBytes(StandardCharsets.UTF_8));
//字符串 -》 字节数组
fileOutputStream.write(str.getBytes(StandardCharsets.UTF_8),0,str.length());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
将硬盘中的图片一个位置读取到另一位置。
(涉及到inputstream和outputstream的用法)
package com.hspedu.outputstream_;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author abner
* @version 1.0
*/
public class FileCopy {
public static void main(String[] args) {
//完成文件拷贝,将d:\Koala.jpg拷贝c:\\
//思路分析
//1。创建的文件的输入流,将文件读入到程序
//2。
//文件比较大的话,完成程序时,读取部分数据就写入到指定的文件
//(内存是有限的)
String srcFilePath = "D:\\Users\\abner\\Pictures\\Camera Roll\\微信图片_20230103203604.jpg";
String destFilePath = "d:\\perfect.jpg";
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(srcFilePath);
fileOutputStream = new FileOutputStream(destFilePath);
byte[] buf = new byte[1024];
int readLen = 0;
while ((readLen = fileInputStream.read(buf)) != -1){
//读取到后,就写入文件,边读边写
fileOutputStream.write(buf,0,readLen);
}
System.out.println("拷贝ok~");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
//关闭输入和输出流
if(fileInputStream != null){
fileInputStream.close();
}
if(fileOutputStream != null){
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//对象关闭或者刷新,不弄就是在内存中,FileWriter
//append 追加
将文件内容读取到控制台
package com.hspedu.reader_;
import org.testng.annotations.Test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* @author abner
* @version 1.0
*/
public class FileReader_ {
public static void main(String[] args) {
}
@Test
public void readFile01(){
//1、创建一个filereader对象
String filePath = "D:\\story.txt";
FileReader fileReader = null;
int readLen = 0;
char[] buf = new char[8];
//int data = ' ';
try {
fileReader = new FileReader(filePath);
//
while ((readLen = fileReader.read(buf)) != -1 ){
System.out.print(new String(buf,0,readLen));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fileReader != null ){
fileReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
常见的数据输入方法
package com.hspedu.writer_;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author abner
* @version 1.0
*/
public class FileWriter_ {
public static void main(String[] args) {
String filePath = "D:\\note.txt";
//创建FileWriter对象
FileWriter fileWriter = null;
char[] chars = {'a','b','c'};
try {
fileWriter = new FileWriter(filePath);//默认是
//
// 3)write(int):写入单个字符
//写入单个字符
fileWriter.write('H');
// 4)write(char[]):写入指定数组
fileWriter.write(chars);
// 5)write(char[],off,Len):写入指定数组的指定部分
fileWriter.write("韩顺平教育".toCharArray(),0,3);
// 6)write(string):写入整个字符串
fileWriter.write("你好,北京");
// 7)write(string,off,Len):写入字符串的指定部分
fileWriter.write("shanghai,天津",0,3);
//数据量大的情况,可以使用循环操作
} catch (IOException e) {
e.printStackTrace();
}finally {
//对于filewriter,一定关闭流,才能把数据写入文件
//你输入流都没有结束,它怎么敢真正写进去
try {
fileWriter.flush();
//fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}