最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Java實現(xiàn)TXT文件導入功能的示例代碼

 更新時間:2025年08月31日 09:20:12   作者:自由的瘋  
在現(xiàn)代Web應用中,文件上傳和處理是一個常見的需求,本文將介紹如何實現(xiàn)一個簡單的TXT文件導入功能,文中的示例代碼簡潔易懂,需要的小伙伴可以了解下

引言

在現(xiàn)代Web應用中,文件上傳和處理是一個常見的需求。本文將介紹如何實現(xiàn)一個簡單的TXT文件導入功能,并解析其內(nèi)容以供進一步處理。我們將使用Java后端技術棧來完成這個任務。

背景

假設我們有一個業(yè)務場景,需要從TXT文件中導入用戶的免費天數(shù)信息。這些信息可能包含一些不需要的數(shù)據(jù)(如USER:、PGM:等),我們需要過濾掉這些數(shù)據(jù)并解析出有效的信息。

實現(xiàn)步驟

校驗文件類型:首先檢查上傳的文件是否為TXT格式。

讀取文件內(nèi)容:逐行讀取文件內(nèi)容,并過濾掉不需要的行。

解析數(shù)據(jù):根據(jù)業(yè)務規(guī)則解析有效數(shù)據(jù)。

返回結(jié)果:將解析后的數(shù)據(jù)返回給前端。

代碼實現(xiàn)

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class DepositController {

    @PostMapping("/feeDaysImport")
    public AjaxResult feeDaysImport(@RequestParam("file") MultipartFile file) throws Exception {
        List<DepositInfo> depositInfoList = new ArrayList<>();

        // 校驗文件后綴名是否是 txt
        if (file.getOriginalFilename().toLowerCase().endsWith(".txt")) {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) {
                StringBuilder lineAllContentBuilder = new StringBuilder();
                StringBuilder lineContentBuilder = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) {
                    if (line.contains("USER:") || line.contains("PGM:") || line.contains("CARRIER :")) {
                        continue; // 過濾掉不需要的行
                    }
                    if ("".equals(line) || line.trim().length() == 0) {
                        if (lineContentBuilder.length() > 0) {
                            lineAllContentBuilder.append(lineContentBuilder).append("FINISH\n");
                            lineContentBuilder.setLength(0); // 清空StringBuilder
                        }
                        continue;
                    } else {
                        lineContentBuilder.append(line).append("\n"); // 積累有效行內(nèi)容
                    }
                }

                String lineAllContent = lineAllContentBuilder.toString();
                System.out.println("文本全部內(nèi)容:\n" + lineAllContent);

                // 依照需求解析每行數(shù)據(jù)
                // 假設這里有一些解析邏輯...
                // parseData(lineAllContent, depositInfoList);

                return AjaxResult.success("操作成功", depositInfoList);
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("操作失敗:" + e.getMessage());
                return AjaxResult.error("操作失敗");
            }
        } else {
            logger.error("上傳模板格式錯誤,請上傳txt格式文件");
            return AjaxResult.error("上傳模板格式錯誤,請上傳txt格式文件");
        }
    }

    // 示例方法,用于模擬數(shù)據(jù)解析過程
    private void parseData(String content, List<DepositInfo> depositInfoList) {
        // 解析邏輯...
    }
}

進入代碼分屏

代碼解釋

1.文件類型校驗

if (file.getOriginalFilename().toLowerCase().endsWith(".txt"))

我們通過檢查文件名的后綴來確定文件類型是否為TXT。

2.文件讀取與內(nèi)容過濾

try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) {
    StringBuilder lineAllContentBuilder = new StringBuilder();
    StringBuilder lineContentBuilder = new StringBuilder();
    String line;

    while ((line = reader.readLine()) != null) {
        if (line.contains("USER:") || line.contains("PGM:") || line.contains("CARRIER :")) {
            continue; // 過濾掉不需要的行
        }
        if ("".equals(line) || line.trim().length() == 0) {
            if (lineContentBuilder.length() > 0) {
                lineAllContentBuilder.append(lineContentBuilder).append("FINISH\n");
                lineContentBuilder.setLength(0); // 清空StringBuilder
            }
            continue;
        } else {
            lineContentBuilder.append(line).append("\n"); // 積累有效行內(nèi)容
        }
    }

    String lineAllContent = lineAllContentBuilder.toString();
    System.out.println("文本全部內(nèi)容:\n" + lineAllContent);
}

使用??BufferedReader??逐行讀取文件內(nèi)容,并過濾掉不需要的行。當遇到空白行時,將積累的有效行內(nèi)容添加到最終的結(jié)果字符串中。

3.數(shù)據(jù)解析

// 假設這里有一些解析邏輯...
// parseData(lineAllContent, depositInfoList);

在實際項目中,你需要在這里添加具體的解析邏輯,將解析后的數(shù)據(jù)存儲到??depositInfoList??中。

4.異常處理

catch (Exception e) {
    e.printStackTrace();
    logger.error("操作失敗:" + e.getMessage());
    return AjaxResult.error("操作失敗");
}

捕獲并記錄任何可能發(fā)生的異常,以便于調(diào)試和日志追蹤。

5.返回結(jié)果

return AjaxResult.success("操作成功", depositInfoList);

將解析后的數(shù)據(jù)封裝到??AjaxResult??對象中并返回給前端。

Java 實現(xiàn)TXT文件上傳

我們將探討如何使用Spring Boot框架實現(xiàn)一個簡單的功能:通過HTTP POST請求上傳TXT文件,并對文件內(nèi)容進行解析。此示例適用于處理包含特定格式數(shù)據(jù)的文本文件,如用戶存款信息等。

添加必要的依賴

首先,確保你的??pom.xml???或??build.gradle??文件中包含了必要的依賴項。對于這個例子,我們需要Spring Web和Apache Commons IO庫來簡化文件操作:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.8.0</version>
    </dependency>
</dependencies>

創(chuàng)建控制器方法

接下來,我們創(chuàng)建一個控制器類,用于處理文件上傳和解析邏輯。以下是完整的代碼示例:

import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

@RestController
public class FileUploadController {

    private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class);

    @PostMapping("/feeDaysImport")
    public AjaxResult feeDaysImport(@RequestParam("file") MultipartFile file) throws Exception {
        List<DepositInfo> depositInfoList = new ArrayList<>();
        // 校驗文件后綴名是否是 txt
        if (file.getOriginalFilename().toLowerCase().endsWith(".txt")) {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) {
                StringBuilder lineAllContent = new StringBuilder();
                String lineContent = "";
                String line;
                while ((line = reader.readLine()) != null) {
                    if (line.contains("USER:") || line.contains("PGM:") || line.contains("CARRIER :")) {
                        continue;
                    }
                    if ("".equals(line.trim())) {
                        if (!lineContent.trim().isEmpty()) {
                            lineAllContent.append(lineContent).append("FINISH");
                            lineContent = "";
                        }
                        continue;
                    } else {
                        lineContent += line + "\n";
                    }
                }
                if (!lineContent.trim().isEmpty()) { // 處理最后一段可能未被追加的內(nèi)容
                    lineAllContent.append(lineContent).append("FINISH");
                }
                System.out.println("文本全部內(nèi)容:" + lineAllContent.toString());
                //依照需求解析每行數(shù)據(jù)
                return AjaxResult.success("操作成功", depositInfoList);
            } catch (Exception e) {
                logger.error("操作失敗: " + e.getMessage(), e);
                return AjaxResult.error("操作失敗");
            }
        } else {
            logger.error("上傳模板格式錯誤,請上傳txt格式文件");
            return AjaxResult.error("上傳模板格式錯誤,請上傳txt格式文件");
        }
    }
}

注意事項與優(yōu)化建議

  • 資源管理:在這個例子中,我們使用了try-with-resources語句來自動關閉??BufferedReader??,從而避免資源泄露。
  • 日志記錄:使用SLF4J進行日志記錄,可以幫助我們更好地追蹤程序執(zhí)行過程中的問題。
  • 異常處理:捕獲所有可能的異常,并返回有意義的錯誤消息給客戶端。
  • 擴展性:根據(jù)實際業(yè)務需求,可以進一步擴展此方法以支持更多類型的文件上傳和更復雜的文件內(nèi)容解析邏輯。

總結(jié)

本文詳細介紹了如何實現(xiàn)一個簡單的TXT文件導入功能,并解析其內(nèi)容以供進一步處理。

到此這篇關于利用Java實現(xiàn)TXT文件導入功能的示例代碼的文章就介紹到這了,更多相關Java TXT文件導入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot中JSON數(shù)值溢出問題的處理方案

    SpringBoot中JSON數(shù)值溢出問題的處理方案

    SpringBoot接口因JSON數(shù)值超出int范圍報錯,解決方案為:將字段改為Long、全局異常處理返回友好提示、添加數(shù)據(jù)校驗,推薦使用Long存儲大數(shù)值,避免溢出,本文通過代碼講解的非常詳細,需要的朋友可以參考下
    2025-08-08
  • IDEA下使用Spring Boot熱加載的實現(xiàn)

    IDEA下使用Spring Boot熱加載的實現(xiàn)

    本文主要介紹了IDEA下使用Spring Boot熱加載的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • idea中使用Inputstream流導致中文亂碼解決方法

    idea中使用Inputstream流導致中文亂碼解決方法

    很多朋友遇到一個措手不及的問題當idea中使用Inputstream流導致中文亂碼及Java FileInputStream讀中文亂碼問題,針對這兩個問題很多朋友不知道該如何解決,下面小編把解決方案分享給大家供大家參考
    2021-05-05
  • mybatis中的mapper.xml使用循環(huán)語句

    mybatis中的mapper.xml使用循環(huán)語句

    這篇文章主要介紹了mybatis中的mapper.xml使用循環(huán)語句,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 很詳細的Log4j配置步驟

    很詳細的Log4j配置步驟

    Log4J的配置文件(Configuration File)就是用來設置記錄器的級別、存放器和布局的,它可接key=value格式的設置或xml格式的設置信息。通過配置,可以創(chuàng)建出Log4J的運行環(huán)境。
    2008-11-11
  • 詳談@Cacheable不起作用的原因:bean未序列化問題

    詳談@Cacheable不起作用的原因:bean未序列化問題

    這篇文章主要介紹了@Cacheable不起作用的原因:bean未序列化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 使用Java高效將CSV轉(zhuǎn)換為Excel的實現(xiàn)方法

    使用Java高效將CSV轉(zhuǎn)換為Excel的實現(xiàn)方法

    在日常的數(shù)據(jù)處理和分析工作中,CSV文件因其輕量級和通用性而廣受歡迎,然而,當我們需要進行復雜的數(shù)據(jù)分析或利用Excel強大的圖表和公式功能時,將CSV數(shù)據(jù)轉(zhuǎn)換為Excel文件就成了開發(fā)者們常見的需求和痛點,本文將深入探討如何利用Java高效地將CSV轉(zhuǎn)換為Excel
    2025-08-08
  • java實現(xiàn)TCP socket和UDP socket的實例

    java實現(xiàn)TCP socket和UDP socket的實例

    這篇文章主要介紹了本文主要介紹了java實現(xiàn)TCP socket和UDP socket的實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Springboot整合logback的詳細教程

    Springboot整合logback的詳細教程

    這篇文章主要介紹了Springboot整合logback的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • java8列表中通過stream流根據(jù)對象屬性去重的三種方式

    java8列表中通過stream流根據(jù)對象屬性去重的三種方式

    這篇文章主要介紹了java8列表中通過stream流根據(jù)對象屬性去重的三種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

临猗县| 平乡县| 翁源县| 鹰潭市| 米脂县| 商都县| 砀山县| 常德市| 普格县| 永昌县| 互助| 淮安市| 龙海市| 淅川县| 博客| 凌源市| 永安市| 福安市| 谷城县| 偃师市| 新乡县| 安化县| 峨边| 苗栗市| 伊宁县| 中宁县| 贵阳市| 临海市| 阿尔山市| 新巴尔虎右旗| 泾川县| 壤塘县| 长垣县| 金塔县| 兴和县| 方城县| 永善县| 钟祥市| 马公市| 龙川县| 巴林左旗|