java 复制输入流_Java中文乱码,IO流,读取,字符输出输入流,创建,复制或剪切效果,追加【诗书画唱】...

这篇博客介绍了Java中如何使用IO流进行文件操作,包括创建新文件、写入内容、读取文件、防止中文乱码、文件追加、文件复制以及剪切文件的实现。示例代码详细展示了字符输入输出流的使用,并提供了防止乱码的解决方案。
摘要由CSDN通过智能技术生成

在项目的相对路径下新建一个txt文件,内容为你对IO流字符流的总结,使用IO流读取该文件的内容显示在控制台

715ddce5e43299f54f934ed07238e122.png

fa51c5324fa6ad3c3f52039176a10a92.png

package createFile;

import java.io.*;

import java.sql.*;

import java.util.Scanner;

public class io {

//个人心得:在最大,最前面的位置设置静态的Connetion链接,

//方便后面的调用等。

static Connection con=DBUtilsPreparedStatement.getCon();

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

File wenjian=new File("xiangDui.txt");

//if(wenjian.exists()){//用exists判断这个文件是否存在

如果存在就delete用删除掉,防止存在的文件中有内容

//wenjian.delete();

//}//用createNewFile创建文件

wenjian.createNewFile();

//————————————————————

//下面是把内容写入

//自己建的或本身就有的文件

String neiRong="IO is importment";

FileWriter xieRu=new FileWriter(wenjian);

//

//写入文件(就像用吸管喝奶茶)的时候就是要声明

//write(写),flush(冲),close(关),每次

//用吸管喝以口奶茶时都有奶茶(流体)冲到嘴巴中之后嘴巴关闭

xieRu.write(neiRong);

xieRu.flush();

//

//flush英[flʌʃ]

//美[flʌʃ]

//冲(抽水马桶); (用水) 冲洗净,冲洗;

//

xieRu.close();

//——————————————————————

//下面是读取获取自己写的或本身就有的文件,

//之后用System.out.print打印出读取得内容:

FileReader duDu=new FileReader(wenjian);

//读取文件可以一个字符一个字符的读,

//也可以一次读取多个字符 ,

//读取的时候不用flush清空管道,

//只有写入的时候flush清空管道

char [] shuZu=new char[10];

int xiaBiao;

while((xiaBiao=duDu.read(shuZu))!=-1){

System.out.print(new String(shuZu,0,xiaBiao));

//new String(shuZu,0,xiaBiao):

//把一个字节数组by从0取到xiaBiao,

//取出来之后转换成String类型

}

duDu.close();

//读取和写入都最后要用close

}

}

c468b5f4056709b32bd792a324e13794.png

9ba7d849933a84f055051e6e83c52c4a.png

e7659c2c9f380073f03c72eb5e4f1417.png

5807c62adef0510178d3a62bcee1f845.png

防止中文乱码的方法:

cb853e621a4b2164c340419e906728fb.png

使用File对象在项目根目录创建一个aa.txt的文件,使用字符输出流将内容”一闪一闪亮晶晶,漫天都是小星星”输出到该文件中0e98f728ea01ab78de93e358a472504a.png

18255619e80221385fa4200418f72e3b.png

package createFile;

import java.io.*;

public class zhuiJiaRoot {

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

File wenjian=new File("src//aa.txt");

wenjian.createNewFile();

//输出流(追加内容),zhuiJia:追加

FileWriter xieRu=new FileWriter(wenjian , true);

String neiRong="一闪一闪亮晶晶,漫天都是小星星";//声明内容

xieRu.write(neiRong);//写出数据

xieRu. flush();//清空管道

xieRu. close();//关闭链接"

//Writer为字符输出流

//Reader为字符输入流

System.out.println("追加成功!请鼠标右键点\n"

+ "项目文件来刷新文件等");

}

}

3d53a4a6693efd14bf5929b58f237060.png

95dfe6f71b3aec4b0720a02935ca33cb.png

1d385e0e9a3039d9eb485d719f45e172.png

在相对目录中新建.txt文件追加内容到里面:b443b26282377161ab2a507cc533e5df.png

package createFile;

import java.io.*;

public class xieRu {

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

File wenjian=new File("zhuiJia.txt");

wenjian.createNewFile();

//输出流(追加内容),zhuiJia:追加

FileWriter xieRu=new FileWriter(wenjian , true);

String neiRong="给诗书画唱一键三连和关注";//声明内容

xieRu.write(neiRong);//写出数据

xieRu. flush();//清空管道

xieRu. close();//关闭链接"

System.out.println("追加成功!请鼠标右键点\n"

+ "项目文件(就是最大,最外面的目录,\n"

+ "比如[file文件和IO流]\n"

+ "的[refresh],来刷新文件等");

}

}

a48d9408e89c794145daa9db0b25f6bd.png

e8649d9cb2c5a88a970e1abfda17d01c.png

d13a1acdd6307c7510564e7bbedd477a.png

制作复制效果123f9c003614b75e4944bdc13384f6c7.png

package createFile;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

/**个人的心得:

* 文件复制功能:

* 从一个输入流中读取数据,然后通过输出流写入目标位置

*一边读,一边写(意思就是copy("(要复制的原文件路径)"

*,"(要复制的新的和原文件内容一致的路径)")

*/

public class copyXiaoGuo {

public static void main(String[] args) {

System.out.println("开始复制...");

copyFangFa("zhuiJia.txt","zhuiJia2.txt");

System.out.println("复制成功!");

}

//copyFangFa:复制方法(自己封装和命名的方法)

//target英[ˈtɑːɡɪt]

//美[ˈtɑːrɡɪt]

//n.目标;

//src:源

private static void copyFangFa(String yuanLaiWenJian,String fuZhiWenJian) {

//创建源文件,和目标文件:

File srcFile = new File(yuanLaiWenJian);

File targetFile = new File(fuZhiWenJian);

yuanLaiWenJian:原来的文件

//fuZhiWenJian:复制的文件

//创建输入输出流

InputStream in =  null;

OutputStream out = null;

try {

in = new FileInputStream(srcFile);

out = new FileOutputStream(targetFile);

byte[] byteShuZu = new byte[1024];

int len = -1;

while((len = in.read(byteShuZu))!=-1) {

out.write(byteShuZu,0,len);

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally {

try {

if(in != null) in.close();

if(out != null) out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

b15a49b5db17ee53333fb9efdaa02edf.png

d26affdf5249fe4f05de85d66b9413e9.png

930eee86a4b7c1e4cd630bed4e33303a.png

12f580f64cadf5b85552052b5356d634.png

d1d0c4f80cb6041f75ea7a0f617a9845.png

使用File对象在项目根目录下创建一个bb.txt的文件,使用字符输入流将aa.txt的内容读取出来后在内容后追加内容”明天会更好”

921a960d2ae4731a615a98b5f9a2879f.png

package createFile;

import java.io.*;

import java.sql.*;

import java.util.Scanner;

public class shuLuLiuZhuiJia {

static Connection con=DBUtilsPreparedStatement.getCon();

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

File aaWenjian=new File("src//aa.txt");

FileReader duQu=new FileReader(aaWenjian);

//duQu:读取

char [] shuZu=new char[100];

//100为要读取的内容的字节长度

int xiaBiao;

while((xiaBiao=duQu.read(shuZu))!=-1){

System.out.print(new String(shuZu,0,xiaBiao));

File wenjian=new File("src//bb.txt");

wenjian.createNewFile();

FileWriter xieRu=new FileWriter(wenjian);

xieRu.write(new String(shuZu,0,xiaBiao));

xieRu.flush();

xieRu.close();

}

duQu.close();

File bbWenjian=new File("src//bb.txt");

bbWenjian.createNewFile();

//输出流(追加内容),zhuiJia:追加

FileWriter xieRu=new FileWriter(bbWenjian , true);

String neiRong="明天会更好";//声明内容

xieRu.write(neiRong);//写出数据

xieRu. flush();//清空管道

xieRu. close();//关闭链接"

//Writer为字符输出流

//Reader为字符输入流

System.out.println("\n追加成功!请鼠标右键点\n"

+ "项目文件来刷新文件等");

}

}

c1e59c52f5d1f45611885a5cdc03c211.png

7362a5d8c0b58d0cd5c3fc4f5947a0c3.png

4e79431e19ca5216b8487cdc56479523.png

制作剪切效果

剪切(电脑术语)bai是指把你选中的du信息放入到剪切板中,后zhi续操作一般是“粘dao贴”,在一个新地方完成“粘贴”步骤后,原来地方的信息自动删除,剪切板中的信息会在新地方中出现。

简言之,假设有两个文件夹甲、乙,在甲文件夹中有信息A。打开甲文件夹,将信息A剪切,然后打开乙文件夹,选择“粘贴”,那么信息A就从甲文件夹中消失,它跑到了乙文件夹中。

2d51b667b2be2c386e1a87f91ff03c0d.png

84055c6e5ee02b4dbe1b198088172f4b.png

98e61287a701abb134c207090b2fe952.png

package createFile;

import java.io.*;

public class jianQieXiaoGuo {

//个人习惯的命名方法规则:

//copyFangFa_1在copyFangFa里面被调用,

//XXX_1都在XXX里面

public static void copyFangFa_1(File yuanLai, File Xin)

throws IOException {

//

//buffered英[ˈbʌfəd]

//美[ˈbʌfərd]

//v.减少,减缓(伤害); 保护; 使不受…的侵害; 缓冲存储; 缓存;

//

BufferedInputStream huanChongLiuShuRuLiu =

new BufferedInputStream(new FileInputStream(yuanLai));

BufferedOutputStream huanChongShuChuLiu =

new BufferedOutputStream(new FileOutputStream(Xin));

int xiaBiao = 0;

byte[] ziJieShuZu = new byte[1024];

while ((xiaBiao = huanChongLiuShuRuLiu.read(ziJieShuZu)) != -1) {

huanChongShuChuLiu.write(ziJieShuZu, 0, xiaBiao);

}

huanChongLiuShuRuLiu.close();

huanChongShuChuLiu.close();

}

public static void copyFangFa(File yuanLai,

File xin) throws Exception {

if (!xin.exists()) {

xin.mkdirs();

// mkdir:创建指定的一个目录,

//mkdirs:可创建多层原来不存在的目录(即多级目录)

}

File[] shuZu = yuanLai.listFiles();

for (int i = 0; i < shuZu.length; i++) {

if (shuZu[i].isFile()) {

copyFangFa_1(shuZu[i], new File(xin.getPath()

+ "//" + shuZu[i].getName()));

} else

{// 此处"\\"或写成"//"等都可以,仅适用于windows平台,

//            若想实现通用,可将其改为separator

//            separator英[ˈsepəreɪtə(r)]

//            美[ˈsepəreɪtər]

//            n.分离器; 分选机;

copyFangFa(shuZu[i], new File(xin.getPath()

+ "//" + shuZu[i].getName()));

}

}

}

// 创建删除方法,复制完成后删除文件

//    chuanRuWenJian:传入文件

//    shanChuFangFa:删除方法

public static void shanChuFangFa(File chuanRuWenJian) {

if (chuanRuWenJian.isFile()) {

chuanRuWenJian.delete();

} else {

File[] shuZu = chuanRuWenJian.listFiles();

for (int i = 0; i < shuZu.length; i++) {

shanChuFangFa(shuZu[i]);

}

chuanRuWenJian.delete();

}

}

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

File yuanLai = new File("D://原来");

// File yuanLai = new File("OldPath");

//        "OldPath":旧的文件路径

File xin = new File("D://新");

//        File xin = new File("NewPath");

// "NewPath":新的文件路径

copyFangFa(yuanLai, xin);

System.out.println("\n原来的文件夹中的文件复制"

+ "\n到新文件夹中完成");

shanChuFangFa(yuanLai);

System.out.println("\n\n原来的文件夹的文件删除完成");

System.out.println("\n\n剪切完成");

}

}

e0ac0764694f6a17eecc7f35135d1852.png

c276a8e37642be69728c641a0deecb2a.png

5d8ba258f35aeda0e0af4801bf2b68dd.png

6dc81948efe6183557232383bbe0f6f5.png

73aa654c1378e7f9810daf93cc080a6f.png

执行后:

e79ceba063d5e84cbc398df9b5c688d4.png

bc805f74c88479ed7358eaeeb545bd00.png

3767181dbeff8b8c301b6e2723ad66c8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值