动手解决jar转txt软件的一个缺陷

代码

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

//有一些文件,当从jar转换成txt时,发现它为每个文件外建了一个同名的文件夹来保存这个文件
//大概是默认地把一本书建立一个文件夹,然后按照每章独立生成一个文件
//目标是把所有只有一个文件的文件夹里的文件移出,然后删除该文件夹
public class HandleTextBooks
{
private static void deleteFolderOrFile(File file)
{
  if(file.exists())
  {
   if(file.isDirectory())//文件,需要遍历目录下文件或文件夹,文件直接删除,文件夹则递归
   {
    File []files = file.listFiles();
    for(int i=0;i<files.length;i++)
     deleteFolderOrFile(files[i]);
   }
   file.delete();//删除文件或空文件夹
  }
}
//去除点及后缀,取得文件名
static String getFileNameWithoutPostfix(String fileName)
{
  int index = fileName.lastIndexOf('.');
  return fileName.substring(0, index);
}

//参数file是一个txt文件,这个方法把这该文件复制到所在目录的上一层目录里,再把该文件所在的目录删除
static void createATextBook(File file) throws IOException
{
  //在这个例子中,如果文件名(除去“点+后缀”)与所在目录名相同,才需要进行这个方法的操作
  System.out.println(getFileNameWithoutPostfix(file.getName()));System.out.println(file.getParentFile().getName());
  if(getFileNameWithoutPostfix(file.getName()) != file.getParentFile().getName())
   return;
  String fileName = file.getAbsolutePath();
  System.out.println("function 'void createATextBook(File file)-1':"+fileName);
  InputStreamReader reader = new InputStreamReader(new FileInputStream(fileName),"GB2312");
  BufferedReader in = new BufferedReader(reader);
  String readLineStr = new String();    
  //在文件所在目录的上一级目录创建一个与之同名的文件
  System.out.println("function 'void createATextBook(File file)-2':"+file.getParentFile().getParent());
     DataOutputStream out = new DataOutputStream(
    new BufferedOutputStream(new FileOutputStream(file.getParentFile().getParent()+"/"+file.getName())));
     while((readLineStr = in.readLine())!= null)
     {
      out.write((readLineStr+"\r\n").getBytes("GB2312"));//在Windows下换行必须是"\r\n"
     }
     in.close();
     out.close();
     deleteFolderOrFile(file.getParentFile());//删除该文件所在的目录
}
//为了递归调用,单独写成一个方法
static void handleTextBooks(File file)throws IOException
{
  if(file.exists()&&file.isDirectory())
  {
   File temFile = file.listFiles()[0];
   if((file.list().length == 1)&&(temFile.isFile()))
   {
    createATextBook(temFile);
   }
   else
   {
    File []files = file.listFiles();
    for(int i=0;i<files.length;i++)
    {
     handleTextBooks(files[i]);
    }
   }
  }
}
public static void main(String[]args)throws IOException
{
  File file = new File("F:/EBooks/常识作d/");
  handleTextBooks(file);
}
}

:在Java中,File对象即可以是文件也可以是文件夹,所以在一个File文件夹上要写入数据,会提示:拒绝访问。

        Java不提供直接复制的API,所以复制一个文件时,只能是先读取再写入。实验过程中发现,读一行写一行的执行速度远快于读全文再写全文。

        实际上还有些情况,即文件与所在目录名不同,但仍属于本文所要处理的那种情况,所以,可以简单地把方法static void createATextBook(File file) throws IOException
中的第一段注释掉。

效果

原来情况下,每个文件夹下都有唯一一个同名文件:

zrclip_001p3e9030cc

zrclip_002n3e9d6353

处理之后

zrclip_003n1339991

转载于:https://www.cnblogs.com/xiaxiazl/archive/2012/03/24/2415917.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渗透测试 ( 2 ) --- 渗透测试系统、靶机、GoogleHacking、kali工具

操作系统&#xff1a;https://zhuanlan.zhihu.com/p/162865015 1、基于 Windows、Linux、Android 的渗透测试系统 1.1 基于 Linux 的系统 Kali&#xff1a;https://www.kali.org/get-kali/Parrot Security OS&#xff1a;Parrot Securitybackbox&#xff1a;https://www.backbo…

清华发布《中国AI发展报告2018》:中科院系统AI论文产出全球第一

来源&#xff1a;大数据文摘人工智能正成为全球性话题&#xff0c;各国的AI人才争夺战也正愈演愈烈。那么目前&#xff0c;人工智能在中国的发展条件如何&#xff0c;中国距离成为真正的人工智能强国到底还有多远&#xff1f;基于此&#xff0c;7月13日&#xff0c;《中国人工智…

单例模式小记【原创】

中国的历史上很少出现两个皇帝并存的时期&#xff0c;是有&#xff0c;但不多&#xff0c;那我们就认为皇帝是个单例模式&#xff0c;在这个场景中&#xff0c;有皇帝&#xff0c;有大臣&#xff0c;大臣是天天要上朝参见皇帝的&#xff0c;今天参拜的皇帝应该和昨天、前天的一…

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )

白嫖 &#xff1a;https://zhuanlan.zhihu.com/p/449836479&#xff1a;http://t.zoukankan.com/hxlinux-p-15787814.html&#xff1a;https://www.52pojie.cn/thread-1586222-1-1.html Metasploit Pro 英文文档&#xff1a;https://docs.rapid7.com/metasploit/ Metasploit P…

工业4.0进行时:工业机器人为何能够快速爆发?

来源&#xff1a;资本实验室摘要&#xff1a;聚焦前沿科技创新与传统产业升级自George Devol于1961发明第一台可编程工业机器人“Unimate”以来&#xff0c;工业机器人产业已经走过了几十年的历史。到了2000年&#xff0c;全球约有74.25万台工业机器人。其中&#xff0c;超过一…

CRITICAL_SECTION 学习

// Critsetion.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <Windows.h> #include <iostream> #include <process.h> using namespace std;CRITICAL_SECTION g_cs; char name[]"zhangdongsheng";unsigned __std…

渗透测试 ( 4 ) --- Meterpreter 命令详解

From&#xff1a;https://blog.csdn.net/weixin_45605352/article/details/115824811 <<Web 安全攻防(渗透测试实战指南)>> 1、初识 Meterpreter 1.1.什么是 Meterpreter Meterpreter 是 Metasploit 框架中的一个扩展模块&#xff0c;作为溢出成功以后的攻击载荷使…

深度:中国车企遭遇最大危机!末尾淘汰赛开始【附下载】| 智东西内参

来源&#xff1a;智东西摘要&#xff1a;靠“合资”起步的中国自主品牌汽车走到了成熟期的转折点&#xff0c;面临的形势极为严峻。中国汽车自主品牌30多年的发展过程&#xff0c;从闭门造车到合资建厂&#xff0c;再到民营崛起&#xff0c;正在逐渐走向开放。经国务院批准&…

渗透测试 ( 5 ) --- 扫描之王 nmap、渗透测试工具实战技巧合集

Nmap 官方文档 ( 中文文档是 Nmap 版本4.50&#xff0c;英文文档是最新的 )&#xff1a; 英文文档&#xff1a;https://nmap.org/book/man.html中文文档&#xff1a;https://nmap.org/man/zh/index.html#man-description官方 Nmap 项目指南 &#xff1a;https://nmap.org/book…

OSI、TCP/IP or Five-layer(Protocols Use) Model

转载于:https://www.cnblogs.com/michael-shan/archive/2012/03/31/6649681.html

央视深入报道,国内主流芯片真实水平如何?

来源&#xff1a;芯师爷摘要&#xff1a; 站在风口上&#xff0c;猪都会飞&#xff01;——用这来概括当下国内芯片领域再恰当不过了。自中兴事件之后&#xff0c;很多创业者纷纷将商业计划的关键字调整为“芯片”。与此同时&#xff0c;投资者也将目光转移至AI芯片、自动驾驶芯…

渗透测试 ( 6 ) --- SQL 注入神器 sqlmap

sqlmap 官网&#xff1a;http://sqlmap.org/ sqlmap文档地址&#xff1a;https://github.com/sqlmapproject/sqlmap/wiki/Usage sqlmap 使用 思维导图&#xff1a;http://download.csdn.net/detail/freeking101/9887831 黑帽与白帽都喜爱的十大SQL注入工具&#xff1a;http://…

美国研发出百万兆级计算机 Summit,“最强超算”竞争加剧

来源&#xff1a;36Kr摘要&#xff1a;史上最强计算机出现&#xff0c;美国开发出了世界上第一台百万兆级的计算机&#xff0c;超强的计算能力有望能解决更复杂的问题。上个月&#xff0c;美国能源部公布了世界上最快的超级计算机——Summit&#xff0c;整个美国为之庆祝。现在…

渗透测试 ( 7 ) --- 漏洞扫描工具 Nessus

Nessus 官网&#xff1a;https://www.tenable.com/products/nessus/nessus-professional 1、Nessus 简介、下载、安装 1.1 简 介 Nessus 是世界上很流行的漏洞扫描程序&#xff0c;全世界很多组织都有在使用它。该工具提供完整的电脑漏洞扫描服务&#xff0c;并随时更新其漏洞…

报告|中国智能音箱已入局全球市场,双重商业模式迅速扩张

来源&#xff1a;网易智能摘要&#xff1a;最近&#xff0c;全球知名创投研究机构CBInsights发布了有关中国智能音箱市场及业务模式的研究报告&#xff0c;这是其“中国人工智能”系列报告的第三部分。这份报告将目光转向低成本、高容量的智能音箱市场&#xff0c;探讨新的商业…

渗透测试 ( 8 ) --- Burp Suite Pro 官方文档

Burp Suite 官网 &#xff1a;https://portswigger.net/burp 官方文档&#xff1a;https://portswigger.net/burp/documentation/desktop 完整文档&#xff1a;https://portswigger.net/burp/documentation/contents Burp Suite 实战指南 &#xff1a;https://t0data.gitbooks…

人工智能恶意使用报告:预测、预防和缓解

来源&#xff1a;199IT互联网数据中心摘要&#xff1a;一份研究报告指出&#xff0c;人工智能的高速发展伴随着风险。不肖人士可能会使用这个技术发动全自动攻击&#xff0c;让自驾车失控、或把商业用无人机变成能够锁定目标的武器。一份研究报告指出&#xff0c;人工智能的高速…

渗透测试 ( 9 ) --- 社会工程攻击工具 setoolkit

github 地址&#xff1a;https://github.com/trustedsec/social-engineer-toolkit kali工具 -- setoolkit(克隆网站及利用)&#xff1a;https://blog.csdn.net/weixin_41489908/article/details/103851057 1、社会工程学概念 社会工程学通常以交谈、欺骗、假冒或口语等方式&am…

渗透测试 ( 10 ) --- 扫描 web目录、文件 (dirb、wfuzz、wpscan、nikto)

当使用一个工具扫描完成后&#xff0c;如果没发现漏洞&#xff0c;可以再使用其他 web 扫描工具再扫描下&#xff0c;因为每个工具可能侧重点不一样&#xff0c;扫描出来的漏洞就不一样。 敏感文件目录探测方法大全 常用后台 工具扫描 wfuzz dirseach web 爬虫 搜索引擎 文件路…

AI当道,媒体会被机器牵着鼻子走?

来源&#xff1a;猎云网摘要&#xff1a; 现如今&#xff0c;社交媒体平台、搜索引擎和内容聚合商&#xff0c;在很大程度上控制了不同媒体内容的用户流向&#xff0c;从而直接影响了创作出来供大家消费的新闻内容。自此&#xff0c;有人认为&#xff0c;新闻媒体的未来再也无法…