java文件课后动手动脑
package 第九周作业1; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.util.Scanner; public class Main { public static void main(String[] args) {
// TODO 自动生成的方法存根 getFileSize01(new File("E:\\第九周\\src\\作业2\\dada1.txt"));
try {
getFileSize02(new File("E:\\第九周\\src\\作业2\\dada1.txt"));
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
try {
getFileSize03(new File("E:\\第九周\\src\\作业2\\dada1.txt"));
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} /* 获取文件大小的方法01:
* 通过文件的length() 方法获取文件大小,这个通常可以应用于本地文件的大小计算
*/
private static long getFileSize01(File file) { System.out.println(file.length());
return file.length();
}
@SuppressWarnings("unused")
/*
* 获取文件大小的方法02:
* 通过FileChannel类来获取文件大小,这个方法通常结合输入流相关,
* 因此可以用于文件网络传输时实时计算文件大小;
*/
private static long getFileSize02(File file) throws IOException { FileInputStream fis = new FileInputStream(file);
FileChannel fc = fis.getChannel();
System.out.println(fc.size());
return fc.size();
} @SuppressWarnings("unused")
/*获取文件大小的方法03:
* FileInputStream的available()方法看可以用于小文件的文件大小计算,
* 因为available()的返回值类型为int型,可能会存在溢出的情况,
* 所以 available()方法计算文件大小不建议使用;
*/
private static int getFileSize03(File file) throws IOException { FileInputStream fis = new FileInputStream(file);
System.out.println(fis.available());
return fis.available();
} }
第一个输出文件大小,三种方法学习了一下。引自https://blog.csdn.net/u014143369/article/details/53164791
文件夹大小操作(2018/11/20/22:30加):
import java.io.File; public class Wenjian {
/**
* 计算文件夹大小
* @param wenjian_Size
*
*/
public void wenjian_Size(File a)
{
long sum=0; File[] files = a.listFiles();
for(int i=0;i<files.length;i++)
{
sum=sum+getFileSize01(files[i]);
}
System.out.println("size: "+sum); }
/**
* 计算文件大小
* @param file
* @return
*/
@SuppressWarnings("unused")
private long getFileSize01(File file) { return file.length();
} }
package DaDa_Wenjian; import java.io.File;
import java.io.IOException; public class dada { public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根 /* File f1 = new File("E:\\Dada's function library\\src\\DaDa_Wenjian\\dada1.txt");
if(!f1.exists()) {
f1.createNewFile();//如果没有创建一个
}
File f2 = new File("E:\\Dada's function library\\src\\DaDa_Wenjian\\dada2.txt");
if(!f2.exists()) {
f2.createNewFile();//如果没有创建一个
}
F1_F2_copy a= new F1_F2_copy();
a.F1_F2(f1, f2);
*/
File f1 = new File("E:\\Dada's function library\\src\\DaDa_Wenjian"); Wenjian a= new Wenjian();
a.wenjian_Size(f1);
} }
第二个实验:加密文件内容
package 第九周作业1; import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
//编写一个文件加解密程序,通过命令行完成加解密工作
public class Main1 {
private static final int numOfEncAndDec=0x99;//加密解密密钥
private static int dataOfFile=0;//文件字节内容 public static void main(String[] args) {
File srcFile=new File("E:\\第九周\\src\\第九周作业1\\dada1.txt");//初始化文件
File encFile=new File("E:\\第九周\\src\\第九周作业1\\dada2.txt"); //加密文件
File decFile=new File("E:\\第九周\\src\\第九周作业1\\dada3.txt"); //解密文件 try {
//EncFile(srcFile,encFile); //加密操作
//DecFile(encFile,decFile);//解密操作 EncFile(srcFile,decFile); //加密操作 DecFile(decFile,encFile);
}catch(Exception e) {
e.printStackTrace();
}
}
private static void EncFile(File srcFile,File encFile)throws Exception{
if(!srcFile.exists()) {
System.out.println("source file not exixt");
}
if(!encFile.exists()) {
System.out.println("encrypt file created");
encFile.createNewFile();//若无加密文件,新建一个加密文件
}
InputStream fis=new FileInputStream(srcFile);
OutputStream fos=new FileOutputStream(encFile); while((dataOfFile=fis.read())>-1) {//当读到文件内容时
fos.write(dataOfFile^numOfEncAndDec);//将读出的内容加密后写入
}
fis.close();
fos.flush();
fos.close();
}
private static void DecFile(File encFile,File decFile)throws Exception{
if(!encFile.exists()) {
System.out.println("encrypt file not exixt");
}
if(!decFile.exists()) {
System.out.println("decrypt file created");
decFile.createNewFile();
}
InputStream fis=new FileInputStream(encFile);
OutputStream fos=new FileOutputStream(decFile); while((dataOfFile=fis.read())>-1) {
fos.write(dataOfFile^numOfEncAndDec);
}
fis.close();
fos.flush();
fos.close();
} }
来源于网络,但是我有另一种方法就是数据与^的操作:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner; public class Main2 { public static void main(String[] args) { F1_F2(new File("E:\\第九周\\src\\第九周作业1\\1.txt"), new File("E:\\第九周\\src\\第九周作业1\\2.txt"));
}
public static void F1_F2(File f1,File f2)
{
try
{ //写入f2
FileWriter fw=new FileWriter(f2,false);
PrintWriter pw=new PrintWriter(fw);
//阅读f1
Scanner shuru = new Scanner(new BufferedReader(new FileReader(f1))); while(shuru.hasNext())
{
int i = Integer.valueOf(shuru.next()).intValue(); pw.println((char)(i^20000));//插入行号 } pw.flush();
pw.close();
fw.close(); }
catch(Exception e)
{
System.out.println("错误");
}
}
}
把数字变成文字
第三个实验:
感觉超出我的想象,理解不了,但是还是源码奉上
三、编写一个文件分割工具,能把一个大文件分割成多个小的文件
package 文件分割工具;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CutFile {
public static void main(String[] args) {
//调用cutFile()函数 传人参数分别为 (原大文件,切割后存放的小文件的路径,切割规定的内存大小)
cutFile("F:\\测试加密.txt", "F:",10 * 10 * 20);
} private static void cutFile(String src, String endsrc, int num) {
FileInputStream fis = null;
File file = null;
try {
fis = new FileInputStream(src);
file = new File(src);
//创建规定大小的byte数组
byte[] b = new byte[num];
int len = 0;
//name为以后的小文件命名做准备
int name = 1;
//遍历将大文件读入byte数组中,当byte数组读满后写入对应的小文件中
while ((len = fis.read(b)) != -1) {
//分别找到原大文件的文件名和文件类型,为下面的小文件命名做准备
String name2 = file.getName();
int lastIndexOf = name2.lastIndexOf(".");
String substring = name2.substring(0, lastIndexOf);
String substring2 = name2.substring(lastIndexOf, name2.length());
FileOutputStream fos = new FileOutputStream(endsrc + "\\\\"+ substring + "-" + name + substring2);
//将byte数组写入对应的小文件中
fos.write(b, 0, len);
//结束资源
fos.close();
name++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
//结束资源
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
虽然没有看懂,但是我会尽快理解byte的,来理解这个操作。
感觉文件操作不明白byte
java文件课后动手动脑的更多相关文章
- JAVA 数组作业——动手动脑以及课后实验性问题
JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...
- java第二次课件课后动手动脑习题整理总结(2019年9月23号)
一.动手动脑 1 1.题目 2.程序源代码 package yang8; import java.util.Scanner; import java.util.Random; public class ...
- java语法基础--动手动脑问题及课后实验问题
---恢复内容开始--- 动手动脑: 1:仔细阅读示例:EnumTest.java,运行它,分析运行结果 结果 :枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象.相 ...
- java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )
一.课堂测试 1.课堂测试:花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求 (1)减法结果不能为负数 (2)乘法结果不得超过一百,除法结果必须为整数 (3)题目避免重复: (4)可 ...
- 11.8java课后动手动脑
package 动手动脑; import javax.swing.*; class AboutException { public static void main(String[] a) { int ...
- java学习(4)——动手动脑
根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...
- java学习——关于java课件上动手动脑问题简单的分析
问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...
- java语言课堂动手动脑
1 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是 ...
- 01-JAVA语言基础——课后动手动脑
1.一个java类文件中真的只能有一个公有类吗? 请使用Eclipse或javac检测一下以下代码,有错吗? public class Test{ public static void main ...
随机推荐
- gradle构建时跳过指定tests
https://blog.csdn.net/u012672646/article/details/58598532
- mysql恢复ibd文件
1.将原表删除,包括ibd和frm文件 2.重新创建表结构. 3.丢弃表空间 alter table tableName discard tablespace; 4.将要恢复的ibd文件拷贝到数据库目 ...
- ASP.NET Core IHostEnvironment和IApplicationLifetime介绍
IHostEnvironment获取程序信息 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app ...
- alpha冲刺5/10
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺5 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 最近事情有点多,只是跟进了下进度,写了写博客 接下来 ...
- H.265:网络视频的高清时代
去年八月,爱立信公司推出了首款H.265编解码器,而在仅仅六个月之后,国际电联(ITU)就正式批准通过了HEVC/H.265标准,标准全称为高效视频编码(High Efficiency Video C ...
- python函数式编程——返回函数
1.函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 2.闭包 注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还 ...
- Quratz的理解
一:公共术语 1.为什么使用Qurztz 在某一个有规律的时间点干某件事.并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事. Quartz就是 ...
- MySQL查询本周、上周、本月、上个月份数据的sql脚本
2018-11-13 查询今天的数据 select * from 表名 where to_days(时间字段名) = to_days(now()); 查询昨天的数据 SELECT * FROM 表名 ...
- 队列queue的一些操作
1. q = queue.Queue(5) 实例化,5为队列长度 2. q.put("haha") 将数据加入队列,计数器+1 3. q.get() 取出数据,计数器不变 4. q ...
- Flume的概述和安装部署
一.Flume概述 Flume是一种分布式.可靠且可用的服务,用于有效的收集.聚合和移动大量日志文件数据.Flume具有基于流数据流的简单灵活的框架,具有可靠的可靠性机制和许多故障转移和恢复机制,具有 ...