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文件课后动手动脑的更多相关文章

  1. JAVA 数组作业——动手动脑以及课后实验性问题

    JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...

  2. java第二次课件课后动手动脑习题整理总结(2019年9月23号)

    一.动手动脑 1 1.题目 2.程序源代码 package yang8; import java.util.Scanner; import java.util.Random; public class ...

  3. java语法基础--动手动脑问题及课后实验问题

    ---恢复内容开始--- 动手动脑: 1:仔细阅读示例:EnumTest.java,运行它,分析运行结果 结果 :枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象.相 ...

  4. java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )

    一.课堂测试 1.课堂测试:花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求 (1)减法结果不能为负数 (2)乘法结果不得超过一百,除法结果必须为整数 (3)题目避免重复: (4)可 ...

  5. 11.8java课后动手动脑

    package 动手动脑; import javax.swing.*; class AboutException { public static void main(String[] a) { int ...

  6. java学习(4)——动手动脑

    根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...

  7. java学习——关于java课件上动手动脑问题简单的分析

    问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...

  8. java语言课堂动手动脑

    1 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是 ...

  9. 01-JAVA语言基础——课后动手动脑

    1.一个java类文件中真的只能有一个公有类吗? 请使用Eclipse或javac检测一下以下代码,有错吗? public class Test{    public static void main ...

随机推荐

  1. Elasticsearch索引模板和别名

    创建模板(模板名和索引名一样都不能有大写) PUT http://222.108.x.x:9200/_template/templateds { "template": " ...

  2. Centos6安装SaltStack

    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install ...

  3. [转] node升级到8.0.0在vscode启动js执行文件报错

    由于升级node 到 8.0.0 版本 vscode 启动一直报错: `node --debug` and `node --debug-brk` are invalid. Please use `no ...

  4. Oracle Client(客户端) 安装与配置

    因为工作需要,需要通过本地oracle客户端将数据导入到远程服务器上的oracle数据库中.从csdn下了很多oracle客户端,都是属于精简版,缺少imp.exe文件,造成无法导入数据.所以最终从o ...

  5. 洛谷---小L和小K的NOIP考后放松赛

    链接: https://www.luogu.org/contestnew/show/11805?tdsourcetag=s_pcqq_aiomsg 题解: 没人过的题我就没看 t2: 考虑每个点是朋友 ...

  6. EF 数据版本号,处理具体使用方法 RowVersion / Timestamp 使用方法。进行自动处理并发修改

    /* * <div class="form-group"> // 原始 * <div class="form-group hidden"> ...

  7. django源码分析

    原文网址 https://www.jianshu.com/p/17d78b52c732?utm_campaign=maleskine&utm_content=note&utm_medi ...

  8. mysql实现简单的增删改查,放入xmapp自带数据库中

    1.mysql概念:SQL-Structured Query Language,是一种特殊的语言,专用于操作关系型数据库服务器中的数据,所有的SQL语句分为四类: (1)DDL(2)DQL(3)DML ...

  9. Python图表数据可视化Seaborn:4. 结构化图表可视化

    1.基本设置 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns ...

  10. 066 基于checkpoint的HA机制实现

    1.说明 针对需要恢复的应用场景,提供了HA的的机制 内部实现原理:基于checkpoint的 当程序被kill的时候,下次恢复的时候,会从checkpoint对用的文件中进行数据的恢复 2.HA原理 ...