精华内容
下载资源
问答
  • 2021-02-28 12:43:55

    public class OutputStreamWriterTest {

    public static void main(String[] args) {

    try {

    OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("e:\\test.txt"));

    osw.write("学海无涯,维勤是岸!!!");

    System.out.println("文件默认编码:" + osw.getEncoding());// 使用getEncoding()方法取得当前系统的默认字符编码

    osw.close();

    /*

    * 如果在调用FileOutputStream的构造方法时没有加入true,那么新加入的字符串就会替换掉原来写入的字符串,

    * 在调用构造方法时指定了字符的编码,新写入的字符,会使用新指定的编码

    */

    osw = new OutputStreamWriter(new FileOutputStream("e:\\test.txt", true), "ISO8859_1");

    osw.write("他山之石,可以攻玉!!!");

    System.out.println("修改文件编码之后getEncoding:" + osw.getEncoding());

    osw.close();

    System.out.println(codeString("e:\\test.txt"));

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    } catch (Exception e) {

    }

    }

    public static String codeString(String fileName) throws Exception {

    BufferedInputStream bin = new BufferedInputStream(new FileInputStream(fileName));

    int p = (bin.read() << 8) + bin.read();

    String code = null;

    // 其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个字节的16进制数

    switch (p) {

    case 0xefbb:

    code = "UTF-8";

    break;

    case 0xfffe:

    code = "Unicode";

    break;

    case 0xfeff:

    code = "UTF-16BE";

    break;

    case 0x5c75:

    code = "ANSI|ASCII";

    break;

    default:

    code = "GBK";

    }

    return code;

    }

    }

    更多相关内容
  • java修改文件编码

    2017-07-23 19:31:34
    java修改文件编码
  • java获取文件编码格式

    2018-01-26 15:39:52
    通过webview打开html文件有可能编码不同就会乱码,所以要获取html文件编码格式动态改变webview编码设置
  • java 更改文件编码

    千次阅读 2021-03-13 04:31:20
    直接上代码import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FilenameFilter;import java.io....

    直接上代码

    import java.io.BufferedReader;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.FilenameFilter;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    public class TransCoding {

    //需要转编码的目录

    private static String path = "C:\\Users\\Administrator\\Desktop\\123\\HelpUDcAppBG";

    //定义另存目录。若不赋值(但此属性的值必须为字符串,如”“,不能为null)

    //即当前目录下文件转变编码后会覆盖,包括子目录及其文件

    private static String directory = "C:\\Users\\Administrator\\Desktop\\12";

    //定义要转的文件类型。若不赋值(但此属性的值必须为字符串,如”“,不能为null)

    //即转变当前目录下所有类型文件,包括子目录及其文件。

    private static String typeName = "";

    //要转的文件当前编码,默认GBK。因为一般硬盘文件默认ANSI,在中国即是GBK编码。

    private static String codeBefore = "GB2312";

    //要转的文件转后编码,默认UTF-8。

    //需要注意的是如果被编码的文件是全英文的,没有汉字,那么即使下面指定UTF-8,

    //有些计算机也不能生成UTF-8文件,可能与windows的转码有关,但全英文不影响性能。

    private static String codeAfter = "UTF-8";

    public static void main(String[] args){

    File dir = new File(path);

    File dirPath = new File(directory);

    change(dir,dirPath,typeName);

    }

    public static void change(File dir,File dirPath,final String typeName){

    BufferedReader bufferedReader = null;

    BufferedWriter bufferedWriter =null;

    //获得当前目录下的所有符合条件的对象,包括目录。

    File[] files = dir.listFiles(new FilenameFilter(){

    public boolean accept(File dir,String name){

    //如果是目录,直接返回true,意味着可以直接加入listFiles方法里的集合中。

    if(new File(dir,name).isDirectory()){

    return true;

    };

    return name.endsWith(typeName);

    }

    });

    for (File file : files) {

    //如果没有指定另存目录名,此为当前目录的绝对路径

    String pathAbsolute = null;

    //如果没有指定另存目录名,此为当前文件编码后的绝对路径

    File fileModify = null;

    //定义另存目录对象

    File createDir = null;

    //定义另存目录中的文件对象

    File createFile = null;

    //如果当前file对象是一个目录,再调用此方法,递归。

    if(file.isDirectory()){

    //获取此目录绝对路径

    String path = file.getAbsolutePath();

    //截掉当前目录

    String path2 = path.substring(0,path.lastIndexOf("\\"));

    //获取到上级目录

    String path3 = path2.substring(path2.lastIndexOf("\\"));

    //封装成对象方便传递。

    File file2 =null;

    if(dirPath.getName()==null||dirPath.getName().trim()==""){

    change(file,dirPath,typeName);

    }else{

    file2 = new File(dirPath,path3);

    change(file,file2,typeName);

    }

    }else{//不是目录,直接转码

    try {

    //读取目录下文件,并按指定编码读取。

    bufferedReader = new BufferedReader(new InputStreamReader(

    new FileInputStream(file.getAbsolutePath()),codeBefore));

    //如果另存目录为空,表示存放到当前目录。

    if(dirPath.getName()==null||dirPath.getName()==""){

    //绝对路径名 如 D:\action\1.txt

    pathAbsolute = file.getAbsolutePath();

    //截取后的路径 如D:\action\

    String path1 = pathAbsolute.substring(0,

    pathAbsolute.lastIndexOf(file.getName()));

    //新路径 如 D:\action\11.txt

    String pathModify = path1+"1"+file.getName();

    fileModify = new File(pathModify);

    bufferedWriter = new BufferedWriter(new OutputStreamWriter(

    new FileOutputStream(fileModify),codeAfter));

    }else{//否则,将转码后的文件写入指定的目录

    String path = file.getAbsolutePath();

    String fileName = file.getName();

    //获取文件所在的绝对路径目录

    String path2 = file.getAbsolutePath().substring(0,

    path.lastIndexOf(fileName)-1);

    //获取文件所在的上一级目录

    String path3 = path2.substring(path2.lastIndexOf("\\"));

    //创建另存目录

    createDir = new File(dirPath,path3);

    //这里是创建多级目录,防止条件转码时(例如后缀名为.java或.txt),

    //符合条件的文件太深,造成目录创建失败,导致IO写入异常。

    createDir.mkdirs();

    createFile = new File(createDir,fileName);

    bufferedWriter = new BufferedWriter(new OutputStreamWriter(

    new FileOutputStream(createFile),codeAfter));

    }

    String line = null;

    while((line=bufferedReader.readLine())!=null){

    bufferedWriter.write(line);

    bufferedWriter.newLine();

    }

    //我觉得这里写不写都一样,最终关闭流的时候也会刷新。

    //如果写入while循环里会降低效率,每行都要刷新。

    //因为那样写入磁盘的次数就增多了

    bufferedWriter.flush();

    } catch (Exception e) {

    if(createDir!=null)

    createDir.deleteOnExit();

    if(createFile!=null)

    createFile.deleteOnExit();

    throw new RuntimeException("读写错误"+e);

    }

    finally{

    if(bufferedReader!=null){

    try {

    bufferedReader.close();

    } catch (IOException e) {

    throw new RuntimeException("输入流关闭错误");

    }

    }

    if(bufferedWriter!=null){

    try {

    bufferedWriter.close();

    if(fileModify!=null){

    //将原文件删除

    file.delete();

    //创建一个和原文件同名的File对象

    File file3 = new File(pathAbsolute);

    //将编码后的文件名改成原文件名

    fileModify.renameTo(file3);

    }

    } catch (IOException e) {

    throw new RuntimeException("输出流关闭错误");

    }

    }

    }

    }

    }

    }

    }

    展开全文
  • java修改文件字符编码

    2021-02-12 23:06:13
    import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamRead...

    import java.io.BufferedReader;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    public class CharsetEcd {

    String ReaderEcd;//读取文件的字符编码设置

    String outEcd;//写入文件的字符编码设置

    /**

    * 功能:通过构造方法设置编码方式

    * @param ReaderEcd

    * @param outEcd

    */

    public CharsetEcd(String ReaderEcd,String outEcd){

    this.ReaderEcd=ReaderEcd;

    this.outEcd=outEcd;

    }

    /**

    * 功能:更改单文件字符编码

    * @param file 文件

    * @throws IOException

    */

    public void charsetEnc(File file) throws IOException{

    String context="";

    //File file = new File(arg0);

    InputStreamReader is = new InputStreamReader(new FileInputStream(file),ReaderEcd);

    BufferedReader bdf = new BufferedReader(is);

    //

    String str=null;

    while((str=bdf.readLine())!=null){

    context+=str+"\n";

    }

    OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file), outEcd);

    BufferedWriter bdw = new BufferedWriter(os);

    bdw.write(context);

    bdw.close();

    os.close();

    bdf.close();

    is.close();

    }

    /**

    * 功能:更改多文件字符编码

    * @param nameSuffix 文件后缀名

    * @param folder文件夹

    * @throws IOException

    */

    public void doFilesEcd(File folder,String nameSuffix) throws IOException{

    File[] files=folder.listFiles();

    for (File f : files) {

    if(f.isDirectory()){

    doFilesEcd(f,nameSuffix);

    }else {

    if(f.getName().endsWith(nameSuffix)){

    charsetEnc(f);

    System.out.println(f.getPath());

    }

    }

    }

    }

    }

    展开全文
  • 学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。 面试大厂,最基本的就是夯实的基础,不然面试官随便一问你就凉...

    工厂方法模式

    Spring 框架使用工厂模式来实现 Spring 容器的 BeanFactory 和 ApplicationContext 接口。Spring 容器基于工厂模式为 Spring 应用程序创建 bean,并管理着每一个 bean 的生命周期。BeanFactory 和 ApplicationContext 是工厂接口,并且在 Spring 中存在有很多实现类。getBean() 方法是相对应的 bean 的工厂方法。

    抽象工厂模式

    在 Spring 框架中,FactoryBean 接口是基于抽象工厂模式设计的。Spring 提供了很多这个接口的实现,比如 ProxyFactoryBean、JndiFactoryBean、LocalSessionFactoryBean、LocalContainerEntityManagerFactoryBean 等。FactoryBean 帮助 Spring 构建它自己无法轻松构建的对象。通常这是用来构造具有许多依赖关系的复杂对象。它也可以根据配置构造高易变的逻辑。例如,在 Spring 框架中,LocalSessionFactoryBean 是 FactoryBean 的一个实现,它用于获取 Hibernate 配置的关联的 bean 的引用。这是一个数据源的特定配置,它在得到 SessionFactory 的对象之前被使用。对此,在一致的情况下可以用 LocalSessionFactoryBean 获取特定的数据源配置。读者可以将 FactoryBean 的 getObject() 方法的返回结果注入到任何其他属性中。

    单例模式

    Spring 框架提供了一个单例的 bean 来实现单例模式。它类似于单例模式,但它与 Java 中的单例模式不完全相同。

    建造者模式

    Spring 框架中有一些功能实现了建造者模式。以下是 Spring 框架中基于建造者模式的类:

    • EmbeddedDatabaseBuilder

    • AuthenticationManagerBuilder

    • UriComponentsBuilder

    • BeanDefinitionBuilder

    • MockMvcWebClientBuilder

    适配器模式

    Spring 框架使用适配器模式来实现很多功能。以下列出的一些在 Spring 框架中使用到适配器模式的类:

    • JpaVendorAdapter

    • HibernateJpaVendorAdapter

    • HandlerInterceptorAdapter

    • MessageListenerAdapter

    • SpringContextResourceAdapter

    • ClassPreProcessorAgentAdapter

    • RequestMappingHandlerAdapter

    • AnnotationMethodHandlerAdapter

    • WebMvcConfigurerAdapter

    桥接模式

    以下是 Spring 模块中基于桥接模式的实现:

    • ViewRendererServlet: 它是一个 servlet 桥接 ,主要是对 Portlet MVC 的支持

    • 桥接模式: Spring 日志处理使用到桥梁模式

    装饰器模式

    Spring 框架使用装饰器模式构建重要功能,如事务、缓存同步和与安全相关的任务。让我们看看一些 Spring 实现此模式的功能:

    • 织入通知到 Spring 应用程序中。它使用装饰者模式的 CGLib 代理,其通过在运行时生成目标类的子类来工作。

    • BeanDefinitionDecorator: 它通过使用自定义属性来增强 bean 的定义。

    • WebSocketHandlerDecorator: 它用来增强一个 WebSocketHandler 附加行为。

    外观模式

    在企业级应用中,如果使用到 Spring 框架,那么外观模式是常用于应用程序的业务服务层,它用于整合所有服务。读者也可以在 DAO 的持久层上应用这种模式。

    代理模式

    Spring 框架使用 Spring AOP 模块中的代理模式。在 Spring AOP 中,笔者可以创建对象的代理来实现横切关注点。在 Spring 中,其他模块也实现了代理模式,如 RMI、 Spring 的 HTTP 调用、Hessian 和 Burlap。

    责任链模式

    Spring Security 项目实现了责任链模式。Spring Security 允许通过使用安全过滤器链在应用程序中实现身份验证和授权功能。这是一个高度可配置的框架。由于使用了责任链设计模式,我们可以在过滤器链上添加自定义过滤器以自定义功能。

    命令模式

    Spring MVC 实现了命令模式。在企业级应用中使用到 Spring 框架,读者经常会看到通过使用命令对象来实现命令模式。

    解释器模式

    在 Spring 框架中,解释器模式在 Spring 表达式语言(SpEL)中使用。Spring 从 Spring 3.0 中增加了这个新功能,读者可以在企业级应用程序中通过 Spring 框架使用它。

    迭代器模式

    Spring 框架还通过 CompositeIterator 类扩展迭代器模式。该模式主要用于 Java 语言的集合框架中,用于按顺序迭代访问元素。

    观察者模式

    在 Spring 框架中,观察者模式用于实现 ApplicationContext 的事件处理功能。Spring 为我们提供了 ApplicationEvent 类和 ApplicationListener 接口来启用事件处理。Spring 应用程序中的任何 bean 实现 ApplicationListener 接口,都会接收到 ApplicationEvent 作为事件发布者推送的消息。在这里,事件发布者是主题(Subject) 和实现 ApplicationListener 的 bean 的观察者(Observer)。

    总结:心得体会

    既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

    学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

    面试大厂,最基本的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

    最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

    领取上述资料,只需点击这里即可免费下载

    大厂Java架构核心笔记(适合中高级程序员阅读):

    习。

    领取上述资料,只需点击这里即可免费下载

    大厂Java架构核心笔记(适合中高级程序员阅读):

    展开全文
  • java获取文件编码

    千次阅读 2022-02-12 10:24:54
    java编码 移位运算 获取文件编码
  • 先将java文件使用记事本打开 然后再点击记事本中内容中左上方【文件】->【另存为】->【编码】修改为自己想要的文件编码
  • 可以转换文件编码格式,网上有些项目和本地的eclipse的编码格式不同就会发生乱码,很烦。然后就各方参考,整理出了这一份代码,直接用,直接转码,直接可以将项目中的java文件一键转码,很方便。里面有个test看了...
  • 经常碰到文件编码格式不一致导致一堆问题,想在linux上批量修改文件夹下的文件编码,操作太麻烦,花了一点时间写了个java程序来操作,用着非常方便,详情如下: 在FileEncodeTranslate类中,修改一下源文件夹路径,...
  • 一:设置编码格式1、JSP文件charset=UTF-8 的作用是指定JSP向客户端输出的编码方式为"UTF-8",pageEncoding="UTF-8" 为了让JSP引擎能正确地解码含有中文字符的JSP页面,这在LINUX中很有效,request.setCharacter...
  • eclipse默认编码为gbk开发一段时间需要修改成utf-8,写个脚本批量处理文件编码格式,也可以批量替换文本内容;
  • Eclipse中java文件编码格式修改

    万次阅读 2017-10-17 14:08:52
    在eclipse中可以影响文件编码格式的设定有好几处。先要知道当前情况下哪个设定起作用,再针对性的进行修改
  • 判断上传的文件编码方式-支持各种编码方式,GB2312、utf-8、gbk、utf-16...
  • java检查文件编码格式

    千次阅读 2019-09-20 16:59:10
    近来碰到需要判断文件编码格式,根据编码格式读取文件,网上百度了好几种方法,遂分享一下。 1.通过文件的前三个字节判断(可用,但据百度说正确率不高): public static String codeString(String fileName) ...
  • 文件:BufferedReader从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。通常,Reader 所作的每个读取...
  • 读取与创建CSV文件,根据第三方jar包自动解析文件编码方式,相关jar包与使用说明
  • 我用下面这段代码写入xml文件TransformerFactorytFactory=TransformerFactory.newInstance();Transformertransformer=tFactory.newTransformer();DOMSourcesource=newDOMSource(doc);StreamResultresult=newStreamR....
  • 导入依赖 <dependency> <groupId>ws.schild</groupId> <artifactId>jave-core</artifactId> <version>2.4.5</version> </dependency> <...
  • Java实现转换文件编码

    2020-12-23 16:17:14
    转换文件编码 将GBK编码的文本文件,转换为UTF-8编码的文本文件。 分析: 1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBK 2.创建OutputStreamWriter对象,构造方法中传递字节输出流和...
  • Java 按指定编码格式读写文件 转换流
  • 我们经常会遇到读取文件内容的情况,就需要判断文件是否为文本文件,及文件编码格式,防止无法读取内容或乱码出现情况。根据文件扩展名判定不太准确,可能会遇到未知扩展名或被修改了扩展名,下面的测试类使用文件头...
  • idea设置项目编码
  • 本文实例讲述了javascript批量修改文件编码格式的方法。分享给大家供大家参考。具体如下: 摘要: 最近在制作手册的时候遇到了一个问题’文档乱码’,查看文件之后发现文件编码不对,总共100多个文件,如果用编辑器...
  • import java.io.File;import java.io.IOException;import java.util.Collection;import org.apache.commons.io....public class Test {public static void main(String[] args) throws IOException {//GBK编码格...
  • java转换字符串编码格式的方法

    千次阅读 2021-03-04 04:12:57
    java转换字符串编码格式 (解码错误,重新解码)字符集概念:规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系。我们在计算机屏幕上看到的是实体化的文字,而在计算机存储...
  • 统一修改 java 文件编码格式

    千次阅读 2016-12-07 11:27:01
    Eclipse 修改文件编码
  • 之前做的一个数据导出功能,生成的csv文件编码格式UTF-8,后来客户反应说文件打开中文乱码,一问用的是office excel,实验后最终发现UTF-8-BOM格式就没问题。这里记录下过程,代码中使用了Hutool工具类。 源码 @...
  • 一、查看Java源文件的编码方式用EditPlus打开Java源文件,点击菜单栏“File”――>...二、修改Java源文件的编码方式较常见的情况是运行源文件时报错“需要为class interface enum”,这种情况往往和源文件采用了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 358,410
精华内容 143,364
关键字:

java改变文件编码格式

java 订阅